我正在开发CRM并面临模型验证方面的一些麻烦。当模型中只有一个对象(我正在使用EF)验证时,过程看起来很简单。但是,当我尝试处理多个对象的验证时,只有一个顶级记录得到验证。这是代码:
@model List<CROS1.Models.GetParams_Result> //
<h3 align="center">
Please fill report params
</h3>
<div class="sidebar_item">
@using (@Ajax.BeginForm("ConfirmGeneration", "Home", ajaxOptions: new AjaxOptions
{
HttpMethod = "GET",
UpdateTargetId = "params",
InsertionMode = InsertionMode.Replace,
LoadingElementId = "resultLoadingDiv",
}, htmlAttributes: new { id = "Form2" }))
{
<table id="hor-minimalist-b">
<tread>
<tr>
<th scope ="col">Report</th>
<th scope ="col">Filter</th>
<th scope ="col">Value</th>
</tr>
</tread>
@foreach (CROS1.Models.GetParams_Result res in Model)
{
<tbody>
<tr>
<td>@Html.DisplayTextFor(r => res.R_name)
</td>
<td>@Html.DisplayTextFor(r => res.Filter_name)
</td>
<td>@Html.EditorFor(r => res.Value)
@Html.ValidationMessageFor(r=>res.Value)
</td>
<td>@Html.DisplayFor(r => res.Unity)
</td>
@Html.HiddenFor(r=>res.F_id)
@Html.HiddenFor(r=>res.R_id)
@Html.HiddenFor(r=>res.Filter_id,new{id="some"})
@Html.HiddenFor(r => res.F_name)
@Html.HiddenFor(r => res.Filter_name)*@
@Html.HiddenFor(r=>res.DefaultValue)
@Html.HiddenFor(r=>res.Visibles)
</tr>
</tbody>
}
</table>
@* <input type="submit" id="submGetParams" />*@
}
</div>
在这种情况下我该怎么做?模型必须如何才能执行此类验证?
答案 0 :(得分:0)
您需要遍历返回的项目列表中的每个项目,将迭代编号附加到每个项目元素,这应该有所帮助:mvc clientside validation for nested (collection) properties