63 votes

Obtenez de l'Attribut DisplayName sans l'aide de LabelFor aide dans asp.net MVC

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?

111voto

Darin Dimitrov Points 528142
<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>

73voto

Aelios Points 3121

Vous devriez essayer la nouvelle fonction existante :

<% Html.DisplayNameFor(m => m.YourProperty) %>

1voto

Hardy Points 11

À mon avis, vous devriez utiliser une chaîne comme un type de résultat parce que sinon vous passez le mécanisme de codage. Un autre point est que vous avez besoin du nom d'Affichage dans certains cas, comme une chaîne de caractères (c'est à dire remplir les colonnes d'un WebGrid classe).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X