首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在不使用asp.net MVC中的LabelFor助手的情况下获取DisplayName属性

在不使用asp.net MVC中的LabelFor助手的情况下获取DisplayName属性
EN

Stack Overflow用户
提问于 2010-10-08 04:52:54
回答 3查看 26.8K关注 0票数 65

检索模型中项目的显示名称属性的最佳方法是什么?我看到很多人使用LabelFor助手来处理所有事情,但是如果我只是想列出数据的话,标签是不合适的。如果我只是想打印出来,有没有一种简单的方法来获取Name属性,比如一个段落?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-08 05:04:42

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

显然,为了避免意大利面条式的代码,编写一个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);
    }
}

然后:

<p>
    <%: Html.GetDisplayName(x => x.SomeProperty) %>
</p>
票数 113
EN

Stack Overflow用户

发布于 2013-07-04 21:24:05

您应该尝试新的现有函数:

<% Html.DisplayNameFor(m => m.YourProperty) %>
票数 74
EN

Stack Overflow用户

发布于 2012-06-29 18:16:22

在我看来,您应该使用字符串作为结果类型,否则您将跳过编码机制。另一点是,在某些情况下,您需要将DisplayName作为字符串(即填充WebGrid类中的列)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3885796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档