74 votes

Comment afficher la valeur de l'attribut DisplayAttribute.Description?

J'ai une classe de modèle, avec une propriété comme celle-ci:

 [Display(Name = "Phone", Description="Hello World!")]
public string Phone1 { get; set; }
 

Afficher une étiquette et rendre une zone de texte pour saisie à mon avis est assez simple:

 @Html.LabelFor(model => model.Organization.Phone1)
@Html.EditorFor(model => model.Organization.Phone1)
@Html.ValidationMessageFor(model => model.Organization.Phone1)
 

Mais comment rendre la valeur de l'attribut d'annotation Description, c'est-à-dire "Hello World!" ??

86voto

Jakob Gade Points 6006

J'ai fini avec un assistant comme celui-ci:

 using System;
using System.Linq.Expressions;
using System.Web.Mvc;

public static class MvcHtmlHelpers
{
    public static MvcHtmlString DescriptionFor<TModel, TValue>(this HtmlHelper<TModel> self, Expression<Func<TModel, TValue>> expression)
    {
        var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData);
        var description = metadata.Description;

        return MvcHtmlString.Create(string.Format(@"<span>{0}</span>", description));
    }
}
 

Merci à ceux qui m'ont conduit dans la bonne direction. :)

41voto

Adam Tuliper - MSFT Points 22478

Vous n'avez besoin d'aucun de ceux-ci :)

En utilisant la technique à partir d' ici, vous pouvez accéder à la valeur via les éléments suivants:


@Html.TextBoxFor( 
        model => model.Email , 
        new { title = ModelMetadata.FromLambdaExpression( 
            model => model.Email , ViewData ).Description } )  

 

4voto

Marc Gravell Points 482669

Par inspection seulement (c'est à dire que je n'ai pas testé cela), mais:

 var attrib = (DisplayAttribute)Attribute.GetCustomAttribute(
             member, typeof(DisplayAttribute));
var desc = attrib == null ? "" : attrib.GetDescription()
 

1voto

Illuminati Points 2295

Vous devrez écrire un assistant personnalisé qui reflèterait votre modèle pour donner la valeur d'attribut Description.

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