在ajax请求之后重定向到另一个页面

时间:2015-01-30 11:03:19

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

我有一个用于向我的数据库添加数据的表单。我使用Ajax.BeginForm()将数据发布到控制器,然后执行存储过程来保存数据。我想要的结果是,如果存储过程无法添加数据并在另一种情况下重定向到其他页面,则显示错误。所以我在控制器中做了类似的事情。

    if (succees)
    {
        return RedirectToAction("ModificationPage", new { id = posted.articleId });
    }
    else
    ViewData["ErrorMessage"] = msg;
    return PartialView("_error");

_error是一个显示错误消息的简单部分视图。我的问题是,当存储过程添加数据,而不是重定向到修改页面时,修改页面在视图内是rendred。 asp mvc中是否有一个方法可以解决这个问题

3 个答案:

答案 0 :(得分:1)

您可以使用ajaxForm的onSuccess参数

   using( Ajax.BeginForm( "action","controlle",
                   new AjaxOptions( ) {
                       OnSuccess = "mySuccessFunction",
                   } ) ) }

然后在js

function mySuccessFunction(){
  //check if html with error exist on page
  window.location = "url"
}

答案 1 :(得分:0)

ajax不支持

RedirectToAction。您可以将重定向网址发送回客户端,并从客户端使用window.location重定向到新位置。

答案 2 :(得分:-2)

你可以在你的控制中

 if (succees)
    {
        Redirect("/AREA/ContolleurName/ModificationPage/?Id=" + posted.articleId+ ")

    }
    else
    ViewData["ErrorMessage"] = msg;
    return PartialView("_error");**strong text**

并在你的控制者中创建行动

public ActionResult ModificationPage(int Id)
        {
return //your view 
}

或者像这样的ajax

    $("class(.test) or Id (#Test)").on("click", function () {
        var id = $(this).attr('id');

        /*Création de la chaine en Json...*/

        window.location.href = "/AREA/ContolleurName/ModificationPage?Id=" + id  +"";


     });