TempData 生命週期
儲存到 TempData 的資料儲存在會話中,並將在訪問資料的第一個請求結束時自動刪除。如果從未讀過,它將一直保留到最後讀取或會話超時。
典型用法類似於以下序列(其中每行從不同的請求呼叫):
//first request, save value to TempData
TempData["value"] = "someValueForNextRequest";
//second request, read value, which 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
,你可以檢索儲存在 TempData 中的資料,而不會將其標記為刪除,因此將來的請求仍然可以使用資料//first request, save value to TempData TempData["value"] = "someValueForNextRequest"; //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 個方法呼叫://first request, save value to TempData TempData["value"] = "someValueForNextRequest"; //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
取決於額外的邏輯。