MVC3 - 将DropdownList绑定到int - 始终需要值

时间:2011-09-27 15:57:04

标签: c# asp.net-mvc validation

我想将下拉列表绑定到整数,如下所示:

@Html.DropDownListFor(m => m.ProductID, Model.AllProducts, "")

显然,在上述情况下,我允许使用默认(空白)值,以便默认情况下不选择任何值。我的viewmodel非常简单,没有任何这些属性的注释

public SelectList AllProducts {get;set;}
public int ProductID {get;set;}

看起来因为我绑定到int数据验证被强制导致在我的html中生成data-val *属性并导致我的客户端验证失败如果我不选择选项。替代方案似乎是绑定到一个字符串而不是一个int,然后解析服务器端的字符串 - 但是,这似乎有点hackish,我想知道是否有一个替代方案可以允许我绑定到一个int,默认(空)值但不强制使用此字段

谢谢

JP

1 个答案:

答案 0 :(得分:11)

如果下拉列表可能具有默认值,则应在视图模型中使用可为空的整数:

public SelectList AllProducts { get; set; }
public int? ProductID { get; set; }

如果您想强制验证用户实际选择使用Required属性修饰的值:

public SelectList AllProducts { get; set; }
[Required]
public int? ProductID { get; set; }