带有模态页面的MVC错误地重定向

时间:2016-12-19 17:10:35

标签: asp.net asp.net-mvc

我尝试使用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);
            }
        });
    });

2 个答案:

答案 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);
        }

因此,当您知道结果成功时,您隐藏模态窗口并在该点应用重定向。否则,您只需显示错误。 (编辑)