Quelle est la meilleure façon de récupérer le nom d'affichage d'attribut d'un élément de votre modèle? Je vois beaucoup de personnes utilisant le LabelFor aide pour tout, mais une étiquette n'est pas approprié, si je veux juste la liste de données. Est-il un moyen facile obtenir juste le Nom de l'Attribut si je veux juste de l'imprimer dans un paragraphe?
Réponses
Trop de publicités?<p>
<%= Html.Encode(
ModelMetadata.FromLambdaExpression<YourViewModel, string>(
x => x.SomeProperty, ViewData).DisplayName
) %>
<p>
Évidemment, afin d'éviter les spaghetti code, il est toujours une bonne idée d'écrire un 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);
}
}
Et puis:
<p>
<%: Html.GetDisplayName(x => x.SomeProperty) %>
</p>
Aelios
Points
3121
Hardy
Points
11