Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
验证ASP.NET MVC中动态创建的字段_Asp.net_Asp.net Mvc - Fatal编程技术网

验证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

我在ASP.NET MVC视图中有以下表单:

<%= 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中的所有键,并且没有异常…工作起来很有魅力