ASP.NETMVCアプリケーションにマルチステップのデータ入力フォームがあります。
情報が投稿されると、入力値がチェックされ、関連データが必要であると判断した場合(たとえば、発注書が存在しないサプライヤーを参照している場合)、ユーザーが追加データを入力できるように別のアクションにリダイレクトします。
ユーザーがすでに入力した値がページ間で失われることを望まないので、viewModelを使用してこれらを2番目のアクションメソッドに渡します。データは2ページ目の非表示の入力に含まれているため、ユーザーには表示されません。
これは、次のようなURLになってしまうことを除いて、正常に機能します。
myDomain / RFQ / CreatePart?PartNumber = Skateboard&Supplier = Bobs%20skateboards&DateCreated = 08%2F28%2F2012%2000%3A00%3A00&DateRequired = 08%2F28%2F2012%2000%3A00%3A00&Quantities = 1%2C%203%20%26%205% 20%オフ
リダイレクトするのではなく、単にビューを返すことを試みました。これにより、次のようなURLが得られます。
myDomain / RFQ / CreatePart
ただし、これにより、投稿、リダイレクト、取得パターンをフォローしなくなったため、ユーザーがブラウザを更新して値を再投稿できるという問題が発生します。
よりクリーンなURLを維持しながら、 Post-Redirect-Getパターンを適切に使用する方法はありますか?
2012年9月29日更新
以下のオプションを調査しSessionState
、当面は使用することにしました。これにより、ユーザーがトランザクションを完了するまで中間データを保存できると同時に、クリーンURLでpost-redirect-getパターンを使用できるようになります。
SessionState
私はこの質問をする前に実際に気づいていましたが、残念ながら私が読んだ情報のいくつかはこれが最善の解決策ではないと信じさせました(ほとんどの記事はパフォーマンスの低下を引用していますが、これの証拠を提供したり理由を説明したりすることはめったにありません)。
この記事を読んだことで、私は今、はるかによく理解SessionState
しています。