检索模型中项目的显示名称属性的最佳方法是什么?我看到很多人使用 LabelFor 助手来处理所有事情,但如果我只想列出数据,则标签不合适。如果我只想将其打印出来(比如说一个段落),是否有一种简单的方法可以获取名称属性?
<p>
<%= Html.Encode(
ModelMetadata.FromLambdaExpression<YourViewModel, string>(
x => x.SomeProperty, ViewData).DisplayName
) %>
<p>
显然,为了避免意大利面条式代码,编写一个助手总是一个好主意:
public static class HtmlExtensions
{
public static MvcHtmlString GetDisplayName<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression
)
{
var metaData = ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, htmlHelper.ViewData);
string value = metaData.DisplayName ?? (metaData.PropertyName ?? ExpressionHelper.GetExpressionText(expression));
return MvcHtmlString.Create(value);
}
}
进而:
<p>
<%: Html.GetDisplayName(x => x.SomeProperty) %>
</p>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)