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>
チェックアウトコントローラー:
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
コードが最も支持された回答を示しているように
UpdateTargetId にビューを挿入する代わりに、ASP.NET MVC Ajax 応答を取得して新しいページにリダイレクトする方法は?
修正しようとしましたが、これにより他のエラーが発生します: ブラウザが URL を開こうとしていますwindow.location = '/Checkout/CompleteOK'
この例外を修正するにはどうすればよいですか? 他の回答で説明されているように、部分的なビューはありません。フォームで method='post' 属性を使用することも試みましたが、問題は解決しません。