将下拉列表绑定到int - Value总是必需的

本文关键字:Value 下拉列表 绑定 int | 更新日期: 2023-09-27 18:09:43

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

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

显然,在上面的情况下,我允许默认(空白)值,因此默认情况下没有选择任何值。我的视图模型非常简单,没有这些属性的任何注释

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

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

谢谢

JP

将下拉列表绑定到int - Value总是必需的

如果下拉列表可以有一个默认值,你应该在视图模型中使用一个可空的整数来绑定:

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

如果你想强制验证用户实际选择了一个值,用Required属性装饰:

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