ASP.NET MVC の部分ビューで、ちょっと「どうやるんだっけ」と手間取ったので、後日のためにメモ。
上段で情報表示を行なって、下段に入力を行うフォームを部分ビューで配置させて、部分ビューからの POST を受けてリダイレクトさせたときに、自動生成された部分ビューのままだと次の例外が発生する。
System.InvalidOperationException 子アクションでリダイレクト アクションを実行することはできません。
部分書き換えなので、制限として、これはこれで正しいと思いますが、上記のような使い方の場合は回避したいということで。
デフォルトで生成されている部分ビューの次のところを、
@using (Html.BeginForm())
次のように書き換える(action は、POST を受け取るアクション名)。
@using (Html.BeginForm("action"))
ただし、この書き換えを行うと、POST の受け取りが child action では無くなるので、サーバー側での検証エラーなどでフォームを再表示させると、部分ビューで作成した入力フォームのみの画面になる(jQuery でのクライアント検証で事が済めば問題はない。あるいは AjaxHelper を利用して作り込むか)。