我在一个actionfilter中的第一个请求中为TempData提供一个值.
filterContext.Controller.TempData["value"] = true;
之后,第二个请求进来,我检查的值
filterContext.Controller.TempData.ContainsKey("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");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。