我尝试使用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);
}
});
});
答案 0 :(得分:0)
在所有人说完这里之后就是问题了。 ajax调用返回内容,我的控制器返回一个视图。所以,我用来解决这个问题的答案是在我的控制器中,如果成功,我返回null,而在其他需要返回视图的无效模型状态或者你有什么。
最后在ajax调用的视图部分,我在成功块中添加了一个if语句,用于检查返回的data
变量,并读取data.length === 0
做一件事情,否则什么都不做。这就是我控制模态,加载器等的方式是在ajax调用中返回了多少内容。
答案 1 :(得分:-1)
以下是一行,如果成功与否,可以通过向其添加json值来检查结果。
控制器:
{
// your logic
return Json(new { success = true, data = redirectToAction("Index") });
// or
return Json(new { success = false });
}
的Ajax:
success: function (partialResult) {
if(partialResult.success)
{ $('#myModal').modal('hide');
$("#newForm").html(partialResult.data);
}
else
$("#newForm").html(partialResult.data);
}
因此,当您知道结果成功时,您隐藏模态窗口并在该点应用重定向。否则,您只需显示错误。 (编辑)