3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
TempDataDictionary讀取中的對(duì)象時(shí),該對(duì)象將在該請(qǐng)求結(jié)束時(shí)標(biāo)記為刪除。
這意味著如果您在TempData上放一些東西
TempData["value"] = "someValueForNextRequest";
并且在您訪問(wèn)它的另一個(gè)請(qǐng)求中,該值將存在,但是一旦您讀取它,該值將被標(biāo)記為刪除:
//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
該P(yáng)eek和Keep方法,使您無(wú)需將其標(biāo)記為刪除讀取值。假設(shè)我們回到第一個(gè)將值保存到TempData的請(qǐng)求。
有了Peek該值,而沒(méi)有通過(guò)一次調(diào)用將其標(biāo)記為刪除,請(qǐng)參見(jiàn)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您指定要保留的標(biāo)記為刪除的密鑰。檢索對(duì)象并隨后保存以將其刪除,這是兩個(gè)不同的調(diào)用。參見(jiàn)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在始終希望保留其他請(qǐng)求的值時(shí)使用。Keep保留值時(shí)使用取決于其他邏輯。
關(guān)于TempData 在這里和這里的工作方式,您有兩個(gè)很好的問(wèn)題
希望能幫助到你!

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