Asp.net-Mvc
TempData 在第二次請求後不會銷毀
我在 actionfilter 中的第一次請求時將值放入 TempData。
filterContext.Controller.TempData["value"] = true;之後第二個請求進來,我檢查值
filterContext.Controller.TempData.ContainsKey("value")價值就在那裡。然後第三個請求進來,我再次檢查該值
filterContext.Controller.TempData.ContainsKey("value")並且價值仍然存在。不應該在第二次請求後銷毀這個值嗎?所有請求都是 AJAX 請求。
不應該在第二次請求後銷毀這個值嗎?
只有當你閱讀它:
var value = filterContext.Controller.TempData["value"];如果您不從 TempData 讀取值,它不會被驅逐。
下面是
TempData.Itemsgetter 的定義方式:public object get_Item(string key) { object obj2; if (this.TryGetValue(key, out obj2)) { this._initialKeys.Remove(key); return obj2; } return null; }請注意,僅當您呼叫 getter 並且僅當在集合中找到該值時,該值才會被逐出。在您展示的程式碼中,您所做的只是檢查 TempData 是否包含給定的鍵,但您尚未讀取該鍵的值。
如果需要,您可以手動逐出 TempData 值:
filterContext.Controller.TempData.Remove("value");還有一種方法可以讓您讀取值而不刪除它:
var value = filterContext.Controller.TempData.Peek("value");