net microsoft enumdropdownlistfor dataannotations data asp annotation asp.net-mvc-3 attributes enums

asp.net-mvc-3 - microsoft - enumdropdownlistfor



¿Cómo hacer que MVC3 DisplayFor muestre el valor de un atributo de visualización de Enum? (1)

Una plantilla de visualización personalizada podría ayudar ( ~/Views/Shared/DisplayTemplates/Foo.cshtml ):

@using System.ComponentModel.DataAnnotations @model Foo @{ var field = Model.GetType().GetField(Model.ToString()); if (field != null) { var display = ((DisplayAttribute[])field.GetCustomAttributes(typeof(DisplayAttribute), false)).FirstOrDefault(); if (display != null) { @display.Name } } }

en un proyecto MVC3, estoy usando una enumeración con atributos de visualización:

public enum Foo { [Display(Name = "Undefined")] Undef = 0, [Display(Name = "Fully colored")] Full = 1 }

La clase modelo tiene una propiedad que usa esta enumeración:

public Foo FooProp { get; set; }

La vista utiliza la clase de modelo y muestra la propiedad a través de

@Html.DisplayFor(m => m.FooProp)

Ahora, por fin, mi pregunta:

¿Cómo puedo hacer que .DisplayFor () muestre la cadena desde el atributo de visualización en lugar de mostrar solo el nombre de valor de la enumeración? (debe mostrar "No definido" o "Completamente coloreado", pero muestra "Undef" o "Completo").

Gracias por los consejos!