部分ビューから POST を受け取ってリダイレクト・アクションをしたいときの覚書

ASP.NET MVC の部分ビューで、ちょっと「どうやるんだっけ」と手間取ったので、後日のためにメモ。

上段で情報表示を行なって、下段に入力を行うフォームを部分ビューで配置させて、部分ビューからの POST を受けてリダイレクトさせたときに、自動生成された部分ビューのままだと次の例外が発生する。

System.InvalidOperationException
子アクションでリダイレクト アクションを実行することはできません。


部分書き換えなので、制限として、これはこれで正しいと思いますが、上記のような使い方の場合は回避したいということで。

デフォルトで生成されている部分ビューの次のところを、

@using (Html.BeginForm())

次のように書き換える(action は、POST を受け取るアクション名)。

@using (Html.BeginForm("action"))

ただし、この書き換えを行うと、POST の受け取りが child action では無くなるので、サーバー側での検証エラーなどでフォームを再表示させると、部分ビューで作成した入力フォームのみの画面になる(jQuery でのクライアント検証で事が済めば問題はない。あるいは AjaxHelper を利用して作り込むか)。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です