ASP.NET MVC下拉列表验证

ASP.NET MVC下拉列表验证,asp.net,asp.net-mvc,validation,drop-down-menu,Asp.net,Asp.net Mvc,Validation,Drop Down Menu,我有 [DisplayName(“国家”)] 公共列表国家{get;set;} DropDownList的强类型模型视图类中的属性 当我尝试检查表单回发时ModelState.IsValid是否有效时,它始终为false&国家/地区的错误提示“无法将[value]转换为SelectListItem”或某种类型 我发现下拉选择的值并没有直接映射(看起来我必须从表单值集合中读取值),但我怎么能忽略列表属性的绑定和验证呢?我只想使ModelState.IsValid属性为true,前提是所有其他字段

我有

[DisplayName(“国家”)]
公共列表国家{get;set;}
DropDownList的强类型模型视图类中的属性

当我尝试检查表单回发时ModelState.IsValid是否有效时,它始终为false&国家/地区的错误提示“无法将[value]转换为SelectListItem”或某种类型

我发现下拉选择的值并没有直接映射(看起来我必须从表单值集合中读取值),但我怎么能忽略列表属性的绑定和验证呢?我只想使ModelState.IsValid属性为true,前提是所有其他字段都已正确填充


提前感谢

是因为提交的值是
字符串
国家
类型,而不是
选择列表项
列表
列表

您将什么绑定到UI中的控件

试一试


最后我使用了变通方法

我现在的模型:

[DisplayName("Country")]
public List<string> Countries { get; set; }
类模型
{
...
[显示名称(“国家”)]
列出国家名单;
Guid CountrySelected新建SelectItemList..)


代替HtmlDropDownListFor.HtmlDropDownListFor映射[id selected]以列出不到CountrySelected属性。现在[id selected]映射到CountrySelected

仍然是相同的ModelState错误。无法从字符串转换为CountryState,因此它需要是字符串。错误消息告诉您需要执行的操作。但它不能是字符串,因为它是一个列表:)我放弃了使用DropDownListFor的尝试,并将DropDownList与[name]一起使用属性,该属性指向视图模型中的字符串属性
[DisplayName("Country")]
public List<Country> Countries { get; set; }
[DisplayName("Country")]
public List<string> Countries { get; set; }
class Model
{
...
  [DisplayName("Country")]
  List<Country> Countries;

  Guid CountrySelected    <-- new field! 
...
}