Asp.net mvc ASP.NET MVC 5 TemplateEditor中的DropdownList未绑定并触发验证错误
我在ASP.NET MVC的“EditorTemplates”视图中有这段代码Asp.net mvc ASP.NET MVC 5 TemplateEditor中的DropdownList未绑定并触发验证错误,asp.net-mvc,data-binding,html.dropdownlistfor,Asp.net Mvc,Data Binding,Html.dropdownlistfor,我在ASP.NET MVC的“EditorTemplates”视图中有这段代码 @Html.DropDownListFor(model => model.State, new SelectList(Model.States), "-- Please Select --") @Html.ValidationMessageFor(model => model.State, "", new { @class = "text-danger" }) 这是显示下拉列表,我可以选择一个“状态”。
@Html.DropDownListFor(model => model.State, new SelectList(Model.States), "-- Please Select --")
@Html.ValidationMessageFor(model => model.State, "", new { @class = "text-danger" })
这是显示下拉列表,我可以选择一个“状态”。但一旦焦点转移到另一个盒子。验证错误显示出来
为什么下拉列表没有将值指定给model.state
同样,这不是“主视图”。MainView使用以下代码调用此“模板”
@Html.EditorFor(m => m.CustomerAddress)
请告知。在“Stephen Muecke”的帮助下,我发现[StringLength]属性导致了问题。因为这个值来自一个下拉列表,所以我真的不再需要那个属性了。删除后,所选值将正确输入。它与
ModelState
(服务器端)无关-您将收到客户端验证错误。您正在生成的选项的值
属性是什么(显然不是2个字符)公共列表状态{get;}public AddressViewModel(){States=new List();States.Add(“CA”);States.Add(“NV”);States.Add(“AZ”);}这是一个长度为2个字符的字符串的简单列表。以及将哪些验证属性应用于状态
[Required][StringLength(2,ErrorMessage=“0}必须是{1}个字符长。”,MinimumLength=2)][DataType(DataType.Text)][Display(Name=“State”)]公共字符串状态{get;set;}