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

に変更ActionResultJsonResultて返すことができます:

[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 に答える