2012-06-14 12 views
8

asp.net mvcチームは列挙型のデフォルトのモデルバインディングを実装していますか?すぐに使用できるもので、列挙型のカスタムモデルバインダーを作成する必要はありません。enumsのasp.net mvc 4モデルバインディングはどのように実行されますか?

更新:
たとえば、ビューモデルを受け取るアクションがあり、JSONオブジェクトがアクションに投稿されるとします。

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

とビューモデル:

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 
} 

は人型がバインドされますか?

答えて

4

以前のバージョンでもそれがありました。このhtmlとGender = Maleフォームの値は、正しくはGenderのenumプロパティにバインドされています。サーバ側の場合

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

私はそれが最も簡単な私の見解モデル

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 
} 

とビューで

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

TNKSで選択リストを使用することを見つけて下さい!しかし、私はそれがjsonオブジェクトとどのように動作するかにもっと関心がありました – CoffeeCode

+0

Imあなたはなぜそれを試していなかったのか非常に勇敢です:)。それはjsonとordinal form postsと同じ働きをします。値プロバイダの詳細については、http://bradwilson.typepad.com/blog/2010/10/service-location-pt8-value-providers.html – archil

+0

jsonオブジェクトからの列挙へのバインドは、MVC3では私にとってはうまくいきません。私たちは何かうんざりしていませんかわからない。 – nportelli