2012-04-03 6 views
3

私は、TempDataがAsp.Net MVCのセッションによってバックアップされているが、現在の要求の期間だけ有効であることを読んでいます。これにより、Redirect2Actionなどに適したものになります。 現在のリクエストに対してのみ有効であることを考えると、ロードバランサとWebFarmのセッションに関する問題にはなりません。基本的には、リクエストごとに1つのWebサーバーにしかないからです。TempDataがセッションによってバックアップされている理由

代わりにRequest.Itemsコレクションでバックアップするオプションはありますか?

答えて

4

TempDataは現在のものとnext requestにのみ有効です。その理由は、セッション状態に格納されているからです。要求と一緒に保存することはできません。

したがって、セッション状態(負荷分散など)でアイテムを保存してしまうと、TempDataも破損する可能性があります。

はあなたがViewDataDictionaryオブジェクトを使用するのと同じ方法 でデータを渡すためにTempDataDictionaryオブジェクトを使用することができますTempDataDictionary

のマニュアルを参照してください。ただし、Keep メソッドを使用して1つまたは複数の保持キーにマークを付けない限り、 TempDataDictionaryオブジェクトのデータは、1つの要求から次の要求にしか持続しません。 キーが保持のためにマークされている場合、キーは次の要求の のために保持されます。

TempDataDictionaryオブジェクトの一般的な使用方法は、 アクションメソッドからのデータを別のアクションメソッドにリダイレクトするときに渡すことです。たとえば、 アクションメソッドは、RedirectToActionメソッドを呼び出す前に、 コントローラのTempDataプロパティ(TempDataDictionaryオブジェクト を返す)にエラーに関する情報を格納することがあります。次の操作 メソッドは、エラーを処理し、 エラーメッセージを表示するビューをレンダリングできます。

+2

実際には、MVC2の時点で、次回の要求または10個の要求がダウンする可能性がある次回のキーまで、TempDataは保持されます。 http://blog.donnfelker.com/2010/02/26/aspnet-mvc2-tempdata-now-persists/ –

関連する問題