2012-06-14 18 views
8

¿El equipo asp.net mvc ha implementado un enlace de modelo predeterminado para enums? Uno que está fuera de la caja y no hay necesidad de crear un encuadernador de modelo personalizado para enums.¿Cómo se puede realizar el enlace del modelo asp.net mvc 4 para enumeraciones?

ACTUALIZACIÓN:
Digamos que tengo una acción que recibirá un modelo de vista y se publicará un objeto JSON en la acción.

jsObj{id:2, name:'mike', personType: 1} 

y la vista del modelo:

class ViewModel 
{ 
    public int id {get;set;} 
    public string name {get;set;} 
    public PersonType personType{get;set;} 
} 

public enum PersonType : int 
{ 
    Good = 1, 
    Bad = 2, 
    Evil = 3 
} 

¿El tipo de persona obligarse?

Respuesta

4

Estaba allí incluso con versiones anteriores. Este html y el valor de formulario Gender = Male se vinculan correctamente a la propiedad Gender enum.

<select id="Gender" name="Gender"> 
    <option value="Male">Male</option> 
    <option value="Female">Femal</option> 
</select> 

Por el lado del servidor se me hace más fácil de usar listas de selección en mi modelo de vista

public class User 
{ 
    public UserType UserType { get; set; } 

    public IEnumerable<SelectListItem> UserTypesSelectList { get; set; } 

    public User() 
    { 
     UserTypesSelectList = Enum.GetNames(typeof(UserType)).Select(name => new SelectListItem() 
     { 
      Text = name, 
      Value = MakeEnumMoreUserFriendly(name) 
     }); 
    } 
} 

public enum UserType 
{ 
    First, 
    Second 
} 

Y en vista

@Html.DropDownListFor(model => model.UserType, Model.UserTypesSelectList) 
+0

tnks! pero estaba más interesado en cómo funciona con los objetos json – CoffeeCode

+0

Soy muy cómico por qué no lo has probado :). Funciona con JSON de la misma forma que con publicaciones ordinales. Obtenga más información acerca de los proveedores de valor http://bradwilson.typepad.com/blog/2010/10/service-location-pt8-value-providers.html – archil

+0

La vinculación a una enumeración de un objeto json no funciona para mí en MVC3. No estoy seguro de que no estemos haciendo algo tonto. – nportelli

Cuestiones relacionadas