2

注意:以下只是一个示例。

我对 ASP.NET MVC 还很陌生,我正试图弄清楚下拉列表的验证是如何工作的。我的ProfileViewModel班级有以下财产:

[DisplayName("Gender")]
public bool? Gender { get; set; }

null意思是“未知”,true女性和false男性。在视图模型构造函数中我

AllGenders = new List<SelectListItem>(2)
             {
                 new SelectListItem {Text = "Unknown", Value = "null"},
                 new SelectListItem {Text = "Male", Value = "false"},
                 new SelectListItem {Text = "Female", Value = "true"}
             };

首先,似乎我在填充 a 时必须使用字符串List<SelectListItem>,这感觉有点奇怪。真的是这样吗?

其次,当我在列表中选择“未知”时,验证失败告诉我:

值“null”对 Gender 无效。

这是为什么?当我删除“null”选项并更改Gender为 simplebool时,一切似乎都很好。

这是 ASPX:

<%= Html.DropDownList("Gender", Model.AllGenders) %>

(我无法DropDownListFor正常工作,似乎很多其他人也有同样的问题。)

任何帮助表示赞赏!

4

1 回答 1

4
new SelectListItem {Text = "Unknown", Value = "null"},

应该:

new SelectListItem {Text = "Unknown", Value = ""},

发布 "" 将导致 null 被绑定。

于 2010-09-02T14:29:08.957 回答