Asp.net
在 asp.net MVC 中不使用 LabelFor Helper 獲取 DisplayName 屬性
檢索模型中項目的顯示名稱屬性的最佳方法是什麼?我看到很多人都在使用 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>