ASP.NET MVC DropDownList验证

时间:2010-05-16 15:53:29

标签: asp.net asp.net-mvc validation drop-down-menu

我有

[DisplayName("Country")]
public List<SelectListItem> Countries { get; set; }
DropDownList的强类型模型视图类中的

属性。

当我尝试检查表单上的ModelState.IsValid是否回发时,它始终为false&amp; 国家的错误告诉“无法将[value]转换为SelectListItem”或某种类型。

我发现下拉选择值没有直接映射(看起来我必须从Form值集合读取值),但是如何忽略List属性的绑定和验证?我只想让ModelState.IsValid属性为true,如果所有其他字段都正确填充。

提前谢谢

2 个答案:

答案 0 :(得分:0)

是否因为提交的值属于StringCountry类型,而不是SelectListItemList<SelectListItem>的列表。

你在UI中对控件有什么约束?

尝试

[DisplayName("Country")]
public List<Country> Countries { get; set; }

其中Country是DAL中的类型名称。

编辑: 根据您收到的错误,听起来模型希望该值为String,因此请尝试将List<Country>换成List<String>

[DisplayName("Country")]
public List<string> Countries { get; set; }

答案 1 :(得分:0)

最后我使用了解决方法。

我的模特现在:

class Model
{
...
  [DisplayName("Country")]
  List<Country> Countries;

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

我使用Html.DropDownList(“CountrySelected”,Model.Countries.Select(x =&gt; new SelectItemList ..)

而不是HtmlDropDownListFor。 HtmlDropDownListFor将[id selected]映射到List而不是CountrySelected属性。现在[id selected]映射到CountrySelected