ASP.NET MVC2視圖:如何解決孩子的行爲是不允許進行重定向操作,其他的答案不能解決
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcMusicStore.ViewModels.PaymentViewModel>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
...
<form action="<%= Html.Action("PaymentByBankTransfer", "Checkout") %>" >
<input type="submit" value="Payment by bank transfer" />
</form>
CheckoutController:
public ActionResult PaymentByBankTransfer()
{
var order = Session["Order"] as Order;
ExecCommand(@"update dok set confirmed=true where order={0}", order.OrderId);
return CheckoutCompleteOK();
var cart = ShoppingCart.GetCart(HttpContext);
cart.EmptyCart();
// https://stackoverflow.com/questions/1538523/how-to-get-an-asp-net-mvc-ajax-response-to-redirect-to-new-page-instead-of-inser?lq=1
return JavaScript("window.location = '/Checkout/CompleteOK'");
}
// common method called from other controller methods also
public ActionResult CheckoutCompleteOK()
{
var cart = ShoppingCart.GetCart(HttpContext);
cart.EmptyCart();
// prevent duplicate submit if user presses F5
return RedirectToAction("Complete");
}
public ActionResult Complete()
{
var order = Session["Order"] as Order;
SendConfirmation(order);
return View("PaymentComplete", order);
}
按下表單提交按鈕會導致異常
Child actions are not allowed to perform redirect actions
由於代碼顯示來自
的最高答案答案試圖修復它,但是這會導致其他錯誤:瀏覽器嘗試打開URL window.location = '/Checkout/CompleteOK'
如何解決這個異常?一切看起來都很好,沒有其他答案中描述的部分視圖。 我試過在表單中使用method ='post'屬性,但問題仍然存在。
這與您的問題無關,但是您是否意識到在您的PaymentByBankTransfer操作中,第一次返回後的代碼無法訪問? – Romias
是的。第一次返回後的代碼顯示了使用其他參考答案中的代碼解決問題的另一個不成功的嘗試。最好避免這種javascipt注射,首先返回應該工作。我問爲什麼第一次返回導致這個stange錯誤,可能在RedirectToAction方法調用 – Andrus
你試過'返回RedirectToAction(「完成」);'直接從'PaymentByBankTransfer()'?你是否有同樣的錯誤,或者你是否達到了預期的行爲? –