5

MVC 4 を使用します。

当社のサイトで注文が行われると、注文は次の宛先に送信されます。

    [HttpPost]
    public ActionResult ConfirmOrder(ABCModel model)
    {
        //Do Stuff
        return View("ConfirmedOrder", model);
    }

ユーザーには [確認済み] ページが表示されます。

ブラウザで更新を押すと、ページが再び POST します。

おそらくリダイレ​​クトまたは何らかの並べ替えで、MVCにPOSTを再度防止する方法はありますか?

4

2 に答える 2

10

する代わりに

return View("ConfirmedOrder", model)

確認ロジックをコントローラーに分離して実行します

return RedirectToAction("ConfirmOrderActionName").

ここで、ConfirmOrderActionNameコントローラーはデータ ストアから注文情報を取得し、それを独自のビューまたはユーザーのConfirmedOrderビューに送信できます。

PS

RedirectToAction()ヘルパー メソッドも型を返すことに注意してくださいActionResult( a を返すのと同じようにView())。

興味がある場合は、次を参照してください。

MSDN: ASP.NET MVC アプリケーションのコントローラーとアクション メソッドおよびMSDN: ActionResult クラス

于 2013-10-23T21:12:28.920 に答える
1

ロジックを少し再設計することをお勧めします。ショッピングカート精算時のコマンド問題です。

ほとんどのショッピングカートの仕組みは次のとおりです -

Step 1. Cart (Create a Session here)

... Shipping, Payment and so on

Step 2: ConfirmOrder - Get (If no Session, redirect to Cart page.)
        ConfirmOrder - Post (If no Session, redirect to Cart page. If valid and 
                             check out successful, redirect to Complete page)

Step 3: Complete (Clear the Session)
于 2013-10-23T21:15:02.883 に答える