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

Posted

技术标签:

【中文标题】ASP.NET MVC DropdownList 设置默认值时未选择任何内容【英文标题】:ASP.NET MVC DropdownList setting default when nothing selected 【发布时间】:2016-07-12 03:53:53 【问题描述】:

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

选择颜色--->选项1值:“-1”

红色 -->选项 2 值:“红色”

绿色 -->选项 3 值:“绿色”

蓝色 -->选项 4 值:“蓝色”

我的视图模型如下:

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

  public string Color get; set;


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

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

【问题讨论】:

“我想知道是否有一种标准方法可以在未选择任何内容时在下拉列表中设置值以及验证它们的标准方法?” ~ 是的,更改@ 987654323@ 值转换为空字符串...这就是插件默认使用select 的方式。如果您被-1 卡住,那么您需要编写自己的自定义规则。 看到这个答案:***.com/a/6218499/594235 @Sparky - 这是一个 MVC 问题,而不是严格意义上的 jquery.validation 问题,因为 MVC 会覆盖 jquery.validation 的默认行为。虽然,当所选值为 null 时,框架会插入一个空字符串 【参考方案1】:

答案其实很简单,并且内置在 MVC 和 Microsoft 不显眼的验证中。

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

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

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

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

实际上,您试图手动执行此操作是在与框架作斗争。

【讨论】:

听起来不错。似乎是我一直在寻找的答案。谢谢! 如果未选择任何内容,则效果很好。但是,如果您已经选择了某些内容,则“选择颜色..”选项不会出现在下拉列表中。有什么想法吗? @user1527762 - 你到底为什么想要它? 不需要该字段时就是这种情况。 @user1527762 - 无论如何,我从未见过你所描述的情况。该选项始终在列表中,即使您选择了一个项目。

以上是关于ASP.NET MVC DropdownList 设置默认值时未选择任何内容的主要内容,如果未能解决你的问题,请参考以下文章

如何给DropDownList控件设置样式(ASP.NET MVC)

Asp.net mvc页面传值-- dropdownlist

在 ASP.NET MVC 2 中实现 DropDownList 的最佳方式?

ASP.NET MVC 使用视图中的值填充 DropDownList

带有 DropDownList 的 ASP.NET MVC 强类型视图

ASP.NET MVC DropDownList 选择值问题