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!
...
}