Cof*_*ode 8 .net model-binding asp.net-mvc-4
asp.net mvc团队是否为枚举实现了默认模型绑定?一个开箱即用,无需为枚举创建自定义模型绑定器.
更新:
假设我有一个接收视图模型的动作,JSON对象将被发布到动作中.
jsObj{id:2, name:'mike', personType: 1}
Run Code Online (Sandbox Code Playgroud)
和视图模型:
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
}
Run Code Online (Sandbox Code Playgroud)
这个人类型会受到约束吗?
即使在早期版本中它也存在。此 html 和Gender = Male表单值正确绑定到Gender枚举属性。
<select id="Gender" name="Gender">
<option value="Male">Male</option>
<option value="Female">Femal</option>
</select>
Run Code Online (Sandbox Code Playgroud)
对于服务器端,我发现在视图模型中使用选择列表是最简单的
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
}
Run Code Online (Sandbox Code Playgroud)
并且在视野中
@Html.DropDownListFor(model => model.UserType, Model.UserTypesSelectList)
Run Code Online (Sandbox Code Playgroud)