【发布时间】:2019-06-22 01:12:35
【问题描述】:
我有一个带有表格和按钮的页面。当我按下按钮时,部分视图会加载到 div 中。在部分视图上有一个 ajax 表单,如果表单数据错误,它会发送回带有验证错误的部分视图,但我想删除部分视图并刷新表以防插入成功。 表单标题:
@using (Ajax.BeginForm("RequestInsert", "Home", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "requestForm" }, new { id = "reqins" }))
主机页面上的 jQuery 提交事件处理程序:
$(document).on('submit', '#reqins', function (e) {
e.preventDefault();
let data = $("form :input").serializeArray();
$.ajax({
url: '@Url.Action("RequestInsert", "Home")'
,type: "POST"
,data: { "__RequestVerificationToken": token, "model": data }
})
.done(function (data) {
$("#requestForm").html("");
table.search('').columns().search('').draw();
})
.fail(function (jqXHR, textStatus) {
alert("fail");
});
});
我对部分视图和 ajax 形式有点困惑。
【问题讨论】:
-
为什么不直接使用
$("#requestForm").empty();来删除表单呢?您目前的问题和目标是什么? -
谢谢,但我的主要问题是如何清空#requestForm div 并同时刷新表格。服务器端操作发回部分视图,我如何在 ajax 成功函数中确定它是否成功,我可以清空 requestForm 还是失败,我必须再次显示部分视图。
-
这取决于您如何从控制器操作返回数据。您可以将状态响应与其他数据响应一起包含,并使用 if-condition 从那里调用
empty()或简单地重新显示包含表单的部分视图。 -
我返回 PartialResult 所以我必须返回一个局部视图,但我没有发回任何其他关于服务器上操作成功的标志。但也许我可以将隐藏标签放入可以包含此标志的部分视图表单中?
标签: asp.net-mvc partial-views ajax.beginform