MVC 3中的输入验证

时间:2012-03-07 09:38:24

标签: asp.net-mvc list validation

我正在开发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>

在这种情况下我该怎么做?模型必须如何才能执行此类验证?

1 个答案:

答案 0 :(得分:0)

您需要遍历返回的项目列表中的每个项目,将迭代编号附加到每个项目元素,这应该有所帮助:mvc clientside validation for nested (collection) properties