2

注意:以下仅为示例。ASP.NET MVC:DropDownList验证

我很新的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"} 
      }; 

首先,看来我有一个填充List<SelectListItem>,这感觉有点奇怪时使用的字符串。这是真的吗?

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

值“空”是不是有效的性别。

这是为什么?当我删除“空”选项并将Gender更改为简单的bool时,一切都很正常。

这是ASPX:

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

(我不能让DropDownListFor正常工作,似乎很多人有同样的问题)

任何帮助表示赞赏!

回答

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

应该是:

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

发帖 “” 会导致空的限制。

+1

感谢*很多*,我从来没有能够弄清楚。您是通过反复试验来了解这一点的,还是可以在某处找到这些信息?在ASP.NET MVC中,似乎“前往资源”非常稀少。 – 2010-09-02 14:30:26

+0

不,从来没有读过,对我有意义。我想我首先注意到它将input type = texboxs留空。模型联编程序始终将字符串字段绑定为null。 – jfar 2010-09-02 14:36:58