ASP.NET 未选择时 MVC DropdownList 设置默认

ASP.NET MVC DropdownList setting default when nothing selected

我有一个关于 ASP.NET MVC 下拉列表的基本问题。我有以下下拉列表

Select颜色--->选项1值:"-1"

红色 -->选项 2 值:"Red"

绿色 -->选项 3 值:"Green"

蓝色 -->选项 4 值:"Blue"

我的视图模型如下:

public class ViewModel
{    
  public List<SelectListItem> ColorList {get; set;}

  public string Color {get; set;}

}

如果没有预先选择任何内容,那么在加载下拉列表时,我附加一个值“-1”并添加文本“- Select 颜色 -”并将其设置为选定选项。这样做我必须编写自定义验证,如果下拉列表需要检查“-1”或者不需要它并且我必须在数据库中存储 null 我必须在保存之前删除“-1”。这对我来说似乎很麻烦。

我想知道是否有一种标准方法可以在未选择任何内容时在下拉列表中设置值以及验证它们的标准方法?

答案其实很简单,内置于 MVC 和 Microsoft unobtrusive validation 中。

如果 selected 值为空,则 "option" 字段的值显示为默认值。换句话说,你做这样的事情:

Html.DropDownListFor(x => x.Color, Model.ColorList, "Select Color...")

因此,当 Model.Color 为 null(确保它是一个可为 null 的值)时,它将显示 "Select Color..." 或您想要放在那里的任何内容。

如果 Model.Color 有一个 [必需] 验证,那么它将确保您 select 在模型验证之前有一个值。

实际上,您尝试手动执行此操作是在对抗框架。