Asp.net mvc TempData赢得';不要在第二次请求后销毁
我在actionfilter的第一个请求中将一个值放入TempDataAsp.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") 价值仍然存在。这个
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");