获取DisplayName属性,而不使用ASP.NET MVC中的LabelFor Helper

检索模型中项目的显示名称属性的最佳方法是什么?我看到很多人使用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>
http://stackoverflow.com/questions/3885796/get-displayname-attribute-without-using-labelfor-helper-in-asp-net-mvc

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:获取DisplayName属性,而不使用ASP.NET MVC中的LabelFor Helper