Что лучший способ состоит в том, чтобы получить атрибут отображаемого имени для объекта в Вашей модели? Я вижу много людей, использующих помощника 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>
Необходимо попробовать новую существующую функцию:
<% Html.DisplayNameFor(m => m.YourProperty) %>
По-моему, необходимо использовать строку, в результате вводят, потому что иначе Вы пропускаете механизм кодирования. Другая точка - то, что Вы нуждаетесь в DisplayName в некоторых случаях как в строке (т.е. заполняете столбцы в классе WebGrid).