TempData keep() vs peek()
2023-08-01 19:27:51
質問
keep()とpeek()の違いは何ですか?
MSDNによると
-
keep():
marks the specified key in the dictionary for retention.
-
peek():
returns an object that contains the element that is associated with the specified key, without marking the key for deletion.
何が違うのかよくわからないのですが、どちらも別のリクエストのために値を保持しているのではないのでしょうか?
どのように解決するのですか?
オブジェクトが
TempDataDictionary
にあるオブジェクトが読み込まれると、そのリクエストの終了時に削除するようにマークされます。
つまり、もしあなたがTempDataに次のようなものを置くなら
TempData["value"] = "someValueForNextRequest";
そして、別のリクエストでアクセスすると、値はそこにありますが、読んだとたんに値は削除されるようにマークされます。
//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
:
//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"];
とは
Keep
を使うと、削除マークがついたキーのうち、残しておきたいものを指定することができます。オブジェクトを取得することと、後で削除から保存することは、2つの異なる呼び出しです。参照
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"];
を使うことができます。
Peek
は、別のリクエストのために常に値を保持したい場合に使用します。使用方法
Keep
を使います。
TempDataがどのように機能するかについて、2つの良い質問があります。 ここで と はこちら
お役に立てれば幸いです。
関連
-
[解決済み] Automapper のタイプマップ構成がない、またはサポートされていないマッピング - エラー
-
[解決済み] MVCで、文字列の結果を返すにはどうしたらいいですか?
-
[解決済み】Html.ActionLinkが"?Length=4 "とレンダリングされるのはなぜか?
-
[解決済み] [Solved] ASP.NET MVCでアクションの絶対URLを見つけるにはどうすればよいですか?
-
[解決済み】jQuery Ajaxの呼び出しとHtml.AntiForgeryToken()について)
-
[解決済み] asp.net mvc: なぜ Html.CheckBox は追加の隠された入力を生成するのですか?
-
[解決済み] ASP.NET MVCのモデルでUrlHelperを呼び出す
-
[解決済み] ASP.NET MVC 1でHttpContextBaseからHttpContextオブジェクトを取得するにはどうすればよいですか?
-
[解決済み] ASP.NET MVCとIIS7で生のHTTPリクエスト/レスポンスをログに記録する
-
[解決済み] ASP.NET MVC - TempData - グッドプラクティスかバッドプラクティスか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Automapperにタイプマップの設定がない、またはマッピングがサポートされていない - エラー
-
[解決済み] プロジェクトのデフォルトのXMLネームスペースはMSBuild XMLネームスペースである必要があります。
-
[解決済み] RedirectToActionのパラメータとしてmodelを渡すことはできますか?
-
[解決済み] Html.ActionLinkをリンクではなく、ボタンや画像にする
-
[解決済み】ASP.NET RazorのHTML.ActionLinkとUrl.Actionの比較
-
[解決済み】HTTPエラー500.19とエラーコード: 0x80070021
-
[解決済み] asp.net mvc: なぜ Html.CheckBox は追加の隠された入力を生成するのですか?
-
[解決済み] ASP.NET MVCにおけるロールベースアクセスコントロール(RBAC)とクレームベースアクセスコントロール(CBAC)の比較
-
[解決済み] MVCとRazorにおけるHtml.TextboxForとHtml.EditorForの相違点
-
[解決済み] ASP.NET MVCにおけるセッション変数