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!