如何重定向到Ajax回发中的操作

时间:2013-08-02 04:42:12

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

您好我有一个Ajax表单

@Ajax.BeginForm("UpdateItems", "Basket", new AjaxOptions() { HttpMethod = "Post", OnSuccess = "LoadAjaxSuccess()" }, new { @id = "AjaxForm" })
{

<input type="submit" class="update-basket-button"   value="Update" />

<input type="submit" class="basket-checkout-button"  value="CheckOut" />
}

现在,当我点击更新时,它应该更新数据库,这对我有用,但是当我点击结帐时,它应该保存更改并重定向到另一个操作。我知道在Ajax帖子中它忽略了RedirecToAction()。什么是实现这一目标的最佳方式。在此先感谢。

控制器操作方法就是这个。

[HttpPost]
    public ActionResult UpdateItems(IList<DocumentAndBasketItemDisplayListDto>basketItems, string button)
    {

        context.UpdateBuyHoldAndQuantityOfBasketItems(basketItems);

        if (string.Equals("CheckOut", button))
        {
            //Response.Redirect("/Order/Index");
            return RedirectToAction("Index", "Order");                
        }

        return new EmptyResult();

    }

1 个答案:

答案 0 :(得分:1)

您可以将ActionResult更改为JsonResult并返回:

[HttpPost]
public JsonResult UpdateItems(IListbasketItems, string button)
{
   context.UpdateBuyHoldAndQuantityOfBasketItems(basketItems);
   if (string.Equals("CheckOut", button))
   {
       //Response.Redirect("/Order/Index");
       return Json(Url.Action("Index", "Order"));
   }
   return Json("");
}

这样在你的ajax方法中你可以检索数据,然后使用类似的东西:

function LoadAjaxSuccess(data) {
   document.location.href = data;
}