【发布时间】:2017-01-05 17:14:50
【问题描述】:
我正在为第一种类型创建一个 Asp.net MVC 站点。
我正在创建一个详细信息页面,并使用了如下内容:
<ul>
<li>
@Html.DisplayNameFor(m => m.MyProp)
@Html.DisplayFor(m => m.MyProp)
</li>
<ul>
我得到类似的东西:
<ul>
<li>
MyProp
MyPropValue
</li>
<ul>
我希望将我的字段标题和字段值包装在单个 Span 中,这样我就可以将其格式化为全局 css,如下所示:
<ul>
<li>
<span class="field-label">MyProp</span>
<span class="field-value">MyPropValue</span>
</li>
<ul>
我想找到一种方法来做到这一点,而不必将每个字段都包含在一个跨度中。我要使用 DisplayTemplate 为 DisplayFor 方法解决这个问题,但我知道我需要为 DisplayNameFor 这样做,每次我使用此方法时它都会自动生成跨度。
我曾想过为@Html.DisplayNameFor 创建自己的替代方法,但我有点困惑该方法的签名是什么。
有人知道如何实现这一点吗?
编辑:我尝试创建一个 HtmlHelper 扩展方法,如下所示:
public static IHtmlString OxDisplayNameFor<TModel, TField> (this HtmlHelper<TModel> helper, Expression<Func<TModel, TField>> expression)
{
return new HtmlString(String.Format(
"<span class='display-label'>{0}</span>", "XXX"));
}
唯一剩下的就是:如何从表达式参数中获取值?
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-mvc-4