注意:以下只是一个例子。
我是ASP.NET MVC的新手,我正试图了解下拉列表的验证是如何工作的。我在ProfileViewModel
课程中有以下属性:
[DisplayName("Gender")]
public bool? Gender { get; set; }
null
的意思是“未知”,true
女性和false
男性。在视图模型构造函数I
AllGenders = new List<SelectListItem>(2)
{
new SelectListItem {Text = "Unknown", Value = "null"},
new SelectListItem {Text = "Male", Value = "false"},
new SelectListItem {Text = "Female", Value = "true"}
};
首先,似乎在填充List<SelectListItem>
时我必须使用字符串,这感觉有点奇怪。这真的是怎么做的?
其次,当我在列表中选择“未知”时,验证无法告诉我:
值'null'对Gender不起作用。
为什么?当我删除“null”选项并将Gender
更改为简单的bool
时,一切似乎都很好。
这是ASPX:
<%= Html.DropDownList("Gender", Model.AllGenders) %>
(我无法让DropDownListFor
正常工作,似乎很多其他人也有同样的问题。)
任何帮助表示赞赏!
答案 0 :(得分:4)
new SelectListItem {Text = "Unknown", Value = "null"},
应该是:
new SelectListItem {Text = "Unknown", Value = ""},
发布“”将导致null绑定。