代码之家  ›  专栏  ›  技术社区  ›  Graham Conzett

在ASP.NET MVC中不使用labelfor helper获取displayname属性

  •  62
  • Graham Conzett  · 技术社区  · 14 年前

    在模型中检索项目的显示名称属性的最佳方法是什么?我看到很多人都在使用label for helper,但是如果我只想列出数据,标签就不合适了。如果我只想打印出来,比如说一个段落,有没有一个简单的方法来获取name属性?

    3 回复  |  直到 14 年前
        1
  •  109
  •   Darin Dimitrov    14 年前
    <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>
    
        2
  •  73
  •   Aelios    11 年前

    <% Html.DisplayNameFor(m => m.YourProperty) %>
    
        3
  •  1
  •   Hardy    12 年前