3 回答

TA貢獻1829條經驗 獲得超9個贊
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您指定要保留的標記為刪除的密鑰。檢索對象并隨后保存以將其刪除,這是兩個不同的調用。參見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 在這里和這里的工作方式,您有兩個很好的問題
希望能幫助到你!

TA貢獻1835條經驗 獲得超7個贊
TempData還是一個字典對象,在HTTP請求期間一直存在。因此,TempData可用于維護一個控制器動作與另一控制器動作之間的數據。
TempData每次用于檢查空值。TempData包含兩個方法keep()和peek(),用于維護從一個控制器動作到其他控制器動作的數據狀態。
當 TempDataDictionary 對象被讀取時,在請求的標記的結束作為刪除到當前讀取對象。
的保持()和PEEK()方法用于無缺失讀取數據中的當前讀取的對象。
當您始終想保留/阻止其他請求的值時,可以使用Peek()。當阻止/保持該值取決于其他邏輯時,可以使用Keep()。
TempData.Peek()和TempData.Keep()中的重載如下所示。
TempData.Keep()有2個重載方法。
void keep():威脅所有在當前請求完成時未刪除的數據。
void keep(字符串鍵):借助名稱將特定項保留在TempData中。
TempData.Peek()沒有重載方法。
object peek(字符串鍵):返回一個對象,其中包含具有特定鍵的項目,而不需要刪除鍵。
下面給出了TempData.Keep()和TempData.Peek()方法的返回類型的示例。
public void Keep(字符串鍵){_retainedKeys.Add(key); }
公共對象Peek(字符串鍵){對象值=值;返回值 }
- 3 回答
- 0 關注
- 820 瀏覽
添加回答
舉報