【发布时间】:2017-12-03 13:13:30
【问题描述】:
我想要做的是在表单上发布提交到一个动作并捕获响应并且工作正常。问题是当 RedirectToAction 被调用时,它只是停留在同一个视图上(它不重定向),或者以防万一模型无效,它不显示模型验证。所以我想问题出在 url 上,但我该如何纠正呢?
jQuery
$("form").on("submit", function (e) {
e.preventDefault();
var form = $(this);
var formURL = form.attr("action");
$.ajax({
type: "POST",
url: formURL,
data: $(this).serialize(),
success: function (response) {
if (response !== null && response.success == false) {
alert(response.responseText);
}
}
});
});
c# asp mvc
public ActionResult Add(SomeModel model) {
if (ModelState.IsValid) {
if (true) {
return Json(new { success = false, responseText = "Some error" }, JsonRequestBehavior.AllowGet);
}
return RedirectToAction("Details", new { id = id });
}
//gets called but it doesn't show validation.
return View(model);
}
public ActionResult Details(int id) {
//gets called but it doesn't show the view.
return view(model);
}
【问题讨论】:
-
也许这个帖子会帮助你stackoverflow.com/questions/12005954/…
-
第一;我不知道如何调用 redirecttoaction ,除非在 C# 中进行了更改,以便您可以在函数中多次返回。如果一切正常,您应该会在警报中看到视图内容。不确定您是否了解 ajax 的概念。如果您只是删除 javascript 并提交表单,您会看到视图。
-
是的,如果我删除提交功能上的表单,我会看到视图,但 Json 结果只会显示在另一个窗口中。我的想法是用那个 javascript 函数捕获它并在警报时显示它。
-
但真正的问题在于 event.preventDefault() ,如果在此之后调用所有其他重定向就会停止工作。如果我从提交功能中删除它,我会得到两条相同的记录(因为我正在发布再次提交)并且来自其他操作的重定向正常工作。
-
ajax 的全部意义在于保持在 same 页面上。 Ajax 调用 never 重定向。不要使用 ajax(在你的情况下这无论如何都没有意义)。进行正常提交。
标签: javascript c# jquery asp.net asp.net-mvc