在AJAX表单提交后重定向

时间:2014-01-07 14:41:02

标签: ajax asp.net-mvc asp.net-mvc-4

使用MVC 4,我有一个包含@Ajax.BeginForm的部分视图表单。

表单按预期提交,结果在我的主视图中异步显示。

我想在我的控制器上有一个条件,如果某个参数在我的表单上为真,那么它会重定向到一个全新的页面(而不是在我的主视图中显示结果)。

当我尝试return RedirectToAction时,整个视图显示在表单通常显示的div中,而不是忽略AJAX并重定向到一个全新的页面。

有谁知道我怎么能实现这个目标?

2 个答案:

答案 0 :(得分:7)

您可以使用return JavaScript来实现它。

public ActionResult MyAction()
{
    if (parameter)
    {
        return JavaScript("window.location = '" + Url.Action("Action", "Controller") + "'");
    }
    //Do something here
    return PartialView("ParitalView", Model);
}

答案 1 :(得分:2)

您无法在ajax调用中执行RedirectToAction

只需返回HttpStatusCodeResult并根据它在Javascript中执行重定向

public ActionResult Save()
{

   return new HttpStatusCodeResult(302,
            "/Users/Details");
}

在Ajax Error函数中,在AjaxOptions { OnFailure = "Error" }

中设置
function Error(response, status, error) {
    window.location.href= response.statusText;
}