【发布时间】:2017-08-17 03:28:26
【问题描述】:
我尝试使用 Ajax 将表单提交到 MVC 服务器。原因是因为我希望错误出现在我的模态中而不是重定向我。
当我发布到控制器并且模型良好且经过验证时,我会致电redirectToAction("Index"),但由于某种原因,它只是将重定向操作发送到我的模态窗口(我的无效模型会去哪里)......它是将它发送到那里,因为那是 ajax 成功的地方,但如果页面成功,我不希望它去那里。
在这种情况下,我希望整个页面重定向。如何在成功时简单地重定向并忘记模式?如果不清楚我在问什么,我可以提供更多详细信息。
这是我提交表单的方式。
$("#newForm").on("submit", "#form", function (e) {
e.preventDefault(); // prevent standard form submission
console.log("ajax successfully called.");
var form = $(this);
$.ajax({
url: form.attr("action"),
method: form.attr("method"), // post
data: form.serialize(),
success: function (partialResult) {
$("#newForm").html(partialResult);
}
});
});
【问题讨论】:
-
成功后,您可以先关闭模式。然后调用您的 MVC 操作?
-
你能不能只在你的成功块中添加这样的东西:window.location.href = "/now/go/here";
-
我不这么认为。这是我正在遵循的表单验证示例。在这个例子中,他称之为成功的局部视图。代替成功,我试图重定向整个页面。 stackoverflow.com/a/31064411/5874935
-
我想在基本层面上,您可以检查返回的数据是否只有在成功验证时才填充的特定值,然后根据它是否存在进行重定向?
-
您进行 ajax 调用和 ajax 调用永远不会重定向 - ajax 的全部意义在于保持在同一页面上(使用
RedirectToAction("Index")将不起作用)。如果你最终想在成功的情况下重定向,那么不要使用ajax,进行正常提交(如果不成功则返回视图)
标签: asp.net asp.net-mvc