【问题标题】:Validation summary with AJAX form in partial view部分视图中带有 AJAX 表单的验证摘要
【发布时间】:2014-11-29 01:08:24
【问题描述】:

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

我有以下代码:

索引视图

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>

列表视图模型

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

项目视图模型

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

我的控制器

[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);
}

【问题讨论】:

  • 未测试,但我怀疑@Html.ValidationSummary() 需要进入PanesViewModel
  • 我原来有它(我刚刚又试了一次),但它并没有解决问题。

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


【解决方案1】:

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

我将整个 AJAX 表单放在一个局部视图中,然后在索引视图中使用 @Html.Partial 调用该局部视图,并在我的控制器操作中返回 PartialView("_Partial")。我猜测 AJAX 表单需要位于正在重新加载的“事物”(部分视图)中,而不是 EditorFor 代码在 inside AJAX 表单被刷新并且 AJAX 表单本身被留下一个人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 2016-10-15
    • 2011-02-09
    • 2014-08-31
    相关资源
    最近更新 更多