获取显示名称属性,而不在asp.net MVC使用LabelFor助手 [英] Get DisplayName Attribute without using LabelFor Helper in asp.net MVC

查看:343
本文介绍了获取显示名称属性,而不在asp.net MVC使用LabelFor助手的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么是检索模型中的项目的显示名称属性的最佳方式?我看到很多使用LabelFor帮手一切的人,但一个标签是不恰当的,如果我只是想列出的数据出来。有一个简单的方法刚刚得到的名称属性,如果我只是想打印出来的,说一个段落?


解决方案

 < P>
    <%= Html.En code(
        ModelMetadata.FromLambdaEx pression< YourViewModel,串>(
            X => x.SomeProperty,ViewData的).DisplayName
    )%GT;
&所述p为H.;

显然,以避免意大利面条code总是写一个帮助一个好主意:

 公共静态类HtmlExtensions
{
    公共静态MvcHtmlString GetDisplayName<的TModel,TProperty>(
        这与的HtmlHelper LT;的TModel>的HtmlHelper,
        防爆pression<&Func键LT;的TModel,TProperty>>前pression
    )
    {
        VAR元= ModelMetadata.FromLambdaEx pression<的TModel,TProperty>(例如pression,htmlHelper.ViewData);
        字符串值= metaData.DisplayName? (metaData.PropertyName ??前pressionHelper.GetEx pressionText(如pression));
        返回MvcHtmlString.Create(值);
    }
}

和则:

 < P>
    <%:Html.GetDisplayName(X => x.SomeProperty)%GT;
&所述; / P>

What is the best way to retrieve the display name attribute for an item in your model? I see a lot of people using the LabelFor helper for everything, but a label isn't appropriate if I just want to list the data out. Is there an easy way just get the Name Attribute if I just want to print it out in, say a paragraph?

解决方案

<p>
    <%= Html.Encode(
        ModelMetadata.FromLambdaExpression<YourViewModel, string>(
            x => x.SomeProperty, ViewData).DisplayName
    ) %>
<p>

Obviously in order to avoid the spaghetti code it is always a good idea to write a helper:

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);
    }
}

And then:

<p>
    <%: Html.GetDisplayName(x => x.SomeProperty) %>
</p>

这篇关于获取显示名称属性,而不在asp.net MVC使用LabelFor助手的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆