我想将下拉列表绑定到整数,如下所示:
@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
答案 0 :(得分:11)
如果下拉列表可能具有默认值,则应在视图模型中使用可为空的整数:
public SelectList AllProducts { get; set; }
public int? ProductID { get; set; }
如果您想强制验证用户实际选择使用Required属性修饰的值:
public SelectList AllProducts { get; set; }
[Required]
public int? ProductID { get; set; }