如何最好地检索模型中项目的显示名称属性?我看到很多人在使用LabelFor helper进行所有操作,但是如果我只想列出数据,那么标签就不合适了。如果我只想将其打印在一个段落中,有没有一种简单的方法来获取Name Attribute?
如何最好地检索模型中项目的显示名称属性?我看到很多人在使用LabelFor helper进行所有操作,但是如果我只想列出数据,那么标签就不合适了。如果我只想将其打印在一个段落中,有没有一种简单的方法来获取Name Attribute?
<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>
你应该尝试新的现有函数:
<% Html.DisplayNameFor(m => m.YourProperty) %>
using
才能完成这个任务:using System.Linq; using System.Linq.Expressions; - James McCormack