using System; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Linq.Expressions; using System.Web; using System.Web.Mvc; namespace CD67.FicheCollege.MVC { public static class MvcHtmlHelpers { /// /// Pour utiliser ce Helper : /// Ajouter un using en haut de la page cshtml : @using CD67.Jarvis.MVC.Internal /// Appeler comme les autres méthodes le nouveau helper : @Html.DescriptionFor(model => model.CHAMPBDD) /// /// /// /// /// /// public static MvcHtmlString DescriptionFor(this HtmlHelper self, Expression> expression) { var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData); var description = metadata.Description; return MvcHtmlString.Create(string.Format(@"{0}", description)); } /// /// Affiche le "display name" pour un élément d'énumération /// /// Elément d'énumaration courant /// Valeur souhaitée /// Valeur de l'annotation Display name de l'élément d'énumération courant public static HtmlString EnumDisplayNameFor(this Enum item, DisplayValue value) { var type = item.GetType(); var member = type.GetMember(item.ToString()); DisplayAttribute displayAttribute = (DisplayAttribute)member[0].GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault(); if (displayAttribute != null) { switch (value) { case DisplayValue.Name: return new HtmlString(displayAttribute.Name); case DisplayValue.Prompt: return new HtmlString(displayAttribute.Prompt); case DisplayValue.Description: return new HtmlString(displayAttribute.Description); default: return new HtmlString(item.ToString()); } } return new HtmlString(item.ToString()); } public enum DisplayValue { Name, Prompt, Description } } }