0

嗨,我有一个 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();

    }
4

1 回答 1

1

您可以更改您的ActionResulttoJsonResult并返回:

[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;
}
于 2013-08-02T05:04:17.707 回答