验证ASP.NET MVC中动态创建的字段
我在ASP.NET MVC视图中有以下表单:验证ASP.NET MVC中动态创建的字段,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我在ASP.NET MVC视图中有以下表单: <%= Html.ValidationSummary() %> <% var fields = ViewData.Model; %> <% using (Html.BeginForm("Dynamic", "Candidate")) { %> <% foreach (var field in fields) { %> <label for="<%= field.Fiel
<%= Html.ValidationSummary() %>
<% var fields = ViewData.Model; %>
<% using (Html.BeginForm("Dynamic", "Candidate")) { %>
<% foreach (var field in fields) { %>
<label for="<%= field.FieldName %>"><%= field.FieldName %></label>
<%= Html.TextBox(field.FieldName, field.Value, new { @class = "short" }) %>
<% } %>
<a class="button green" onclick="$('form').submit(); return false;">Submit</a>
<% } %>
我的问题是,如果任何验证器失败,即验证对象包含错误,则在视图呈现时会出现错误,因为ViewData.ModelState不包含任何键。我哪里出了问题?有什么线索吗?找到了。ViewData.ModelState由响应对象中的参数填充。因此,对于一个动态创建的表单,您不知道在帖子中传递了什么。所以我只是动态地重新创建我的模型状态:
fields.ForEach(f => ViewData.ModelState.Add(f.FieldName ...
然后我们都很好…当在视图上运行验证时,它可以找到ModelState中的所有键,并且没有异常…工作起来很有魅力。找到了它。ViewData.ModelState由响应对象中的参数填充。因此,对于一个动态创建的表单,您不知道在帖子中传递了什么。所以我只是动态地重新创建我的模型状态:
fields.ForEach(f => ViewData.ModelState.Add(f.FieldName ...
然后我们都很好…当验证在视图上运行时,它可以找到ModelState中的所有键,并且没有异常…工作起来很有魅力