2012-06-14 6 views
8

Hat das asp.net mvc-Team eine Standardmodellbindung für Enums implementiert? Eine, die sofort einsatzbereit ist und keine benutzerdefinierten Modellbinder für Enums erstellen muss.Wie führt man asp.net mvc 4-Modellbindung für enums durch?

UPDATE:
Angenommen, ich habe eine Aktion, die ein Ansichtsmodell empfängt, und ein JSON-Objekt wird zur Aktion hinzugefügt.

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

und die Aussicht Modell:

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 
} 

die Person Art gebunden sein?

Antwort

4

Es war dort sogar mit früheren Versionen. Dieser HTML- und Gender = Male Formularwert ist korrekt an Gender Enum-Eigenschaft gebunden.

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

Für die Server-Seite ich es am einfachsten zu verwenden, Auswahllisten in meiner Ansicht nach Modell

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 
} 

Und angesichts

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

tnks finden! aber ich war mehr daran interessiert, wie es mit JSON-Objekten funktioniert – CoffeeCode

+0

Ich bin sehr neugierig, warum Sie es nicht gerade versucht haben :). Es funktioniert mit json genauso wie mit Ordnungsform-Posts. Lesen Sie mehr über Wertanbieter http://bradwilson.typepad.com/blog/2010/10/service-location-pt8-value-providers.html – archil

+0

Bindung an eine Enum von einem Json-Objekt funktioniert nicht für mich in MVC3. Nicht sicher, ob wir nicht etwas albern machen. – nportelli