无需在asp.net MVC中使用LabelFor Helper即可获取DisplayName属性吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (110)

检索模型中项目的显示名称属性的最佳方法是什么?我看到很多人使用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>
用户回答回答于

应该尝试新的现有功能:

<% Html.DisplayNameFor(m => m.YourProperty) %>

扫码关注云+社区

领取腾讯云代金券