が、それは最後に削除対象としてマークされますその要求のあなたは
TempData["value"] = "someValueForNextRequest";
そして、あなたはそれにアクセスする別の要求に似TempDataをに何かを置く場合は、値が存在しますが、できるだけ早くあなたがそれを読んで、値が削除対象としてマークされることを意味
:
//second request, read value and is marked for deletion
object value = TempData["value"];
//third request, value is not there as it was deleted at the end of the second request
TempData["value"] == null
Peek
とKeep
方法は、あなたが削除のためにそれをマークせずに値を読み取ることができるように。値がTempDataに保存された最初の要求に戻るとします。
がPeek
を使用すると、単一の呼び出しで削除のためにそれをマークせずに値を取得し、msdnを参照してください。Keep
で
//second request, PEEK value so it is not deleted at the end of the request
object value = TempData.Peek("value");
//third request, read value and mark it for deletion
object value = TempData["value"];
はあなたが維持したい削除のマークが付けられたキーを指定します。オブジェクトの取得とそれ以降の削除からの保存は、2つの異なる呼び出しです。あなたはいつも別の要求のための値を保持したいときは、Peek
を使用することができますmsdn
//second request, get value marking it from deletion
object value = TempData["value"];
//later on decide to keep it
TempData.Keep("value");
//third request, read value and mark it for deletion
object value = TempData["value"];
を参照してください。値を保持する場合は、追加のロジックに応じてKeep
を使用します。
あなたはTempDataをがhereとhere
それがお役に立てば幸いですがどのように機能するかについて2つの良い質問があります!
ありがとうございます!それは今非常にクリアされています:) –
削除は実際にいつ発生しますか?したがって、読み込み後に削除マークが付いていて、次に他のものを実行し、キープを使用することに決めた場合、リダイレクトを開始している限り、それは保証されますか? – eaglei22
結果とすべてのフィルタが実行された後、現在の要求の最後に削除されます。これは、[ベースコントローラクラス](https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/Controller.cs)を使用している限り、「TempData.Save」の使用法をチェックしますそこには –