部分视图中使用AJAX表单的验证摘要

时间:2014-11-29 01:08:25

标签: c# jquery ajax asp.net-mvc-4 validation

我有一个使用AJAX表单的应用程序。当该表单发布和验证失败时,我返回表单所在的部分视图。我希望​​显示验证摘要,但它不会。我确认模型无效(它返回返回PartialView(" EditorTemplates / PanesViewModel",模型)行),但是当返回部分视图时,不会显示验证摘要。我错过了什么吗?

我有以下代码:

索引视图

using (Ajax.BeginForm("MyAction", "MyController", null, new AjaxOptions
{
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "content",
    LoadingElementId = "loading"
}))
{
    @Html.ValidationSummary()

    <div id="content">
        @Html.EditorFor(m => m.Panes, "EditorTemplates/PanesViewModel")
    </div>
}

PanesViewModel

<fieldset>
    <div id="wrapper">
        <table>
            @Html.EditorFor(m => m.List, "EditorTemplates/ListViewModel")
        </table>
    </div>

    <button type="submit">Submit</button>
</fieldset>

ListViewModel

@Html.EditorFor(m => m.Items, "EditorTemplates/ItemViewModel")

ItemViewModel

<tr>
    <td>@Html.EditorFor(m => m.FieldName)</td>
</tr>

myController的

[HttpPost]
public ActionResult MyAction(PanesViewModel model)
{
    if (ModelState.IsValid)
    {
        // Do stuff
        return PartialView("EditorTemplates/PanesViewModel");
    }

    // Should retain model state and display Validation Summary.
    return PartialView("EditorTemplates/PanesViewModel", model);
}

1 个答案:

答案 0 :(得分:0)

我仍然有点不清楚为什么确切地解决了这个问题,但确实如此:

我将整个AJAX表单放在Partial View中,然后在Index视图中使用@ Html.Partial调用Partial View,并在我的控制器操作中返回PartialView(“_ Partial”)。我猜测AJAX表单需要在重新加载的“东西”里面(局部视图),而不是在里面的内部的的AJA表格中刷新的AJA表格本身单独