MvcHtmlHelpers.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using System.ComponentModel.DataAnnotations;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using System.Web;
  6. using System.Web.Mvc;
  7. namespace CD67.FicheCollege.MVC
  8. {
  9. public static class MvcHtmlHelpers
  10. {
  11. /// <summary>
  12. /// Pour utiliser ce Helper :
  13. /// Ajouter un using en haut de la page cshtml : @using CD67.Jarvis.MVC.Internal
  14. /// Appeler comme les autres méthodes le nouveau helper : @Html.DescriptionFor(model => model.CHAMPBDD)
  15. /// </summary>
  16. /// <typeparam name="TModel"></typeparam>
  17. /// <typeparam name="TValue"></typeparam>
  18. /// <param name="self"></param>
  19. /// <param name="expression"></param>
  20. /// <returns></returns>
  21. public static MvcHtmlString DescriptionFor<TModel, TValue>(this HtmlHelper<TModel> self, Expression<Func<TModel, TValue>> expression)
  22. {
  23. var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData);
  24. var description = metadata.Description;
  25. return MvcHtmlString.Create(string.Format(@"<span>{0}</span>", description));
  26. }
  27. /// <summary>
  28. /// Affiche le "display name" pour un élément d'énumération
  29. /// </summary>
  30. /// <param name="item">Elément d'énumaration courant</param>
  31. /// <param name="value">Valeur souhaitée</param>
  32. /// <returns>Valeur de l'annotation Display name de l'élément d'énumération courant</returns>
  33. public static HtmlString EnumDisplayNameFor(this Enum item, DisplayValue value)
  34. {
  35. var type = item.GetType();
  36. var member = type.GetMember(item.ToString());
  37. DisplayAttribute displayAttribute = (DisplayAttribute)member[0].GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault();
  38. if (displayAttribute != null)
  39. {
  40. switch (value)
  41. {
  42. case DisplayValue.Name:
  43. return new HtmlString(displayAttribute.Name);
  44. case DisplayValue.Prompt:
  45. return new HtmlString(displayAttribute.Prompt);
  46. case DisplayValue.Description:
  47. return new HtmlString(displayAttribute.Description);
  48. default:
  49. return new HtmlString(item.ToString());
  50. }
  51. }
  52. return new HtmlString(item.ToString());
  53. }
  54. public enum DisplayValue
  55. {
  56. Name,
  57. Prompt,
  58. Description
  59. }
  60. }
  61. }