0

フォーム入力のあるページを想像してください:

検索条件:crackers                  


差出人:ian@stackoverflow.com          
宛先:list@stackoverflow.com      
件名:How to maintain form state with PRG?
メッセージ:Imagine a page with form input:              
 
 
 
 
 

送信

ユーザーが [送信] をクリックすると、サーバーはPost-Redirect-Get パターンのRedirect一部として、クライアントに を指示します。

POST /mail/u/compose

HTTP/1.1 303 See Other
Location: https://stackoverflow.com/mail/u/compose

そして、クライアントはGET新しいページの を発行します。問題は、既存のフォームの一部の要素が失われることです。

検索条件:                  

いくつかのドロップダウンとチェックボックスがあると、さらに悪化します。

が存在しない場合、ASP.net で Post-Redirect-Get を使用してフォームの状態を維持するにはどうすればよいですかviewstate


ボーナスリーディング

4

2 に答える 2

1

必要なデータをセッションに保存するか(これは大量のデータにのみ使用し、古いデータのバグに注意します)、リダイレクトのクエリ文字列に値を渡します(これはバグが発生しにくく、少量のデータの場合にうまく機能する可能性があります)。

パターンに適合しませんが、Server.Transferも役立つ場合があります。

于 2012-06-27T15:05:46.367 に答える
1

検索条件の値がシステム内のさまざまなページにまたがって (つまり、ユーザーのセッション全体で) 持続することが想定されている場合、セッションに保存される候補のように思えます。または、複数のセッションに渡って永続化する必要がある場合 (つまり、ユーザーが次にログインしたときに、前回使用した検索基準を記憶している)、より永続的な場所に永続化する必要があります。

MVC の「一時」空間のように動作する ASP.NET で、値が最初の読み取り時に自動的にクリーンアップされることを私は知りません。もちろん、Session をラップするヘルパー クラス (または便利な関数) は、その種の "read-once" 機能を実行できます。

最後に、リダイレクト時に検索基準を URL パラメーターとして渡すことができます。ただし、これは少し面倒で (特に複数のフィールドがある場合)、受信データをサニタイズする必要があります。

于 2012-06-27T15:12:47.040 に答える