我有
[DisplayName("Country")]
public List<SelectListItem> Countries { get; set; }
DropDownList的强类型模型视图类中的属性。
当我尝试检查表单上的ModelState.IsValid是否回发时,它始终为false&amp; 国家的错误告诉“无法将[value]转换为SelectListItem”或某种类型。
我发现下拉选择值没有直接映射(看起来我必须从Form值集合读取值),但是如何忽略List属性的绑定和验证?我只想让ModelState.IsValid属性为true,如果所有其他字段都正确填充。
提前谢谢
答案 0 :(得分:0)
是否因为提交的值属于String
或Country
类型,而不是SelectListItem
或List<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