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
}
}
}