未选择任何内容时,ASP.NET MVC DropdownList设置为默认值

时间:2016-03-24 14:09:56

标签: jquery asp.net-mvc asp.net-mvc-4 jquery-validate unobtrusive-validation

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

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

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

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

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

我的观点模型如下:

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

  public string Color {get; set;}

}

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

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

1 个答案:

答案 0 :(得分:3)

答案实际上非常简单,并且内置于MVC和Microsoft不引人注目的验证中。

如果所选值为null,则“option”字段的值将显示为默认值。换句话说,你做这样的事情:

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

因此,当Model.Color为空(确保它是可以为空的值)时,它将显示“选择颜色...”或任何你想放在那里的东西。

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

实际上,您通过尝试手动执行此操作来对抗框架。