Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc TempData赢得';不要在第二次请求后销毁_Asp.net Mvc_Asp.net Mvc 3_Tempdata - Fatal编程技术网

Asp.net mvc TempData赢得';不要在第二次请求后销毁

Asp.net mvc TempData赢得';不要在第二次请求后销毁,asp.net-mvc,asp.net-mvc-3,tempdata,Asp.net Mvc,Asp.net Mvc 3,Tempdata,我在actionfilter的第一个请求中将一个值放入TempData filterContext.Controller.TempData["value"] = true; 之后,第二个请求进入,我检查值 filterContext.Controller.TempData.ContainsKey("value") 价值就在那里。然后第三个请求进入,我再次检查该值 filterContext.Controller.TempData.ContainsKey("value") 价值仍然存在。这个

我在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.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");