use*_*126 13 asp.net-mvc tempdata asp.net-mvc-3
我在actionfilter中的第一个请求中将值放入TempData.
filterContext.Controller.TempData["value"] = true;
Run Code Online (Sandbox Code Playgroud)
之后第二个请求进来,我检查了值
filterContext.Controller.TempData.ContainsKey("value")
Run Code Online (Sandbox Code Playgroud)
价值就在那里.然后第三个请求进来,我再次检查该值
filterContext.Controller.TempData.ContainsKey("value")
Run Code Online (Sandbox Code Playgroud)
而且价值仍然存在.在第二次请求后,这个值不应该被销毁吗?所有请求都是AJAX请求.
Dar*_*rov 34
在第二次请求后,这个值不应该被销毁吗?
只有你读过它:
var value = filterContext.Controller.TempData["value"];
Run Code Online (Sandbox Code Playgroud)
如果您没有从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;
}
Run Code Online (Sandbox Code Playgroud)
请注意,只有在调用getter时才会驱逐该值,并且只有在集合中找到该值时才会驱逐该值.在您显示的代码中,您要做的就是检查TempData是否包含给定的键,但您还没有读取此键的值.
如果需要,您可以手动逐出TempData值:
filterContext.Controller.TempData.Remove("value");
Run Code Online (Sandbox Code Playgroud)
并且还有一种方法可以让您在不删除它的情况下读取值:
var value = filterContext.Controller.TempData.Peek("value");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14410 次 |
| 最近记录: |