2012-09-17 14 views
12

usando MVC4 Razor y Entityframework 5. Tengo una tabla llamada organización con un campo TypeID entero que he creado un tipo enum. En el código puedo establecer y comparar el typeid usando la enumeración.DropDownListFor enumeraciones en EF5

public enum OrganisationType : int 
    { 
     Company = 1, 
     Department = 2, 
     Location = 4 
    } 

Sin embargo, cuando i generar el create.cshtml ya sea utilizando los vs2012 predeterminado mvc 4 plantillas de afeitar, o la vía el mvcscaffolding Nuget empaquetar tanto ignorar el campo TypeID. Estaba pensando en modificar las plantillas tt para que sean autogeneradas. Pero inicialmente es posible mostrar el nombre descriptivo de la enumeración en una lista desplegablepara.

+0

¿Está pasando el modelo (con la lista) a la vista de la lista desplegable? Depurar para eso. – Ammar

+0

¿Está intentando llenar una lista desplegable con valores enum y texto usando DropdownListFor? – Kaf

Respuesta

24

Esta es la solución, es una lástima que no es fácil modificar las plantillas TT para automatizar esto.

@Html.DropDownListFor(model => model.TypeID, new SelectList(Enum.GetValues(typeof(Models.OrganisationType)))) 

Esto muestra un menú desplegable con los valores textuales, es decir, empresa, departamento, ubicación.

5

En la versión actual de MVC5, si Andamios una vista para un modelo que tiene una enumeración, que va a generar esto:

@Html.EnumDropDownListFor(model => model.OrganisationType, 
          htmlAttributes: new { @class = "form-control" }) 

que hace exactamente lo mismo que la solución de Tim, pero con una sintaxis un poco más bonitas.

Cuestiones relacionadas