gpt4 book ai didi

asp.net-mvc - 第二次请求后 TempData 不会销毁

转载 作者:行者123 更新时间:2023-12-02 12:35:51 25 4
gpt4 key购买 nike

我在操作过滤器中第一次请求时将值放入 TempData。

filterContext.Controller.TempData["value"] = true;

之后,第二个请求到来,我检查该值

filterContext.Controller.TempData.ContainsKey("value")

值(value)就在那里。然后第三个请求进来,我再次检查该值

filterContext.Controller.TempData.ContainsKey("value")

并且该值仍然存在。在第二次请求后这个值不应该被销毁吗?所有请求都是AJAX请求。

最佳答案

Shouldn't be this value destroyed after the second request ?

仅当您阅读它时:

var value = filterContext.Controller.TempData["value"];

如果您不从 TempData 读取值,则不会将其驱逐。

以下是 TempData.Items getter 的定义方式:

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");

关于asp.net-mvc - 第二次请求后 TempData 不会销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12815739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com