首页 asp.Net asp.net-mvc – TempData在第二个请求后不会被破坏

asp.net-mvc – TempData在第二个请求后不会被破坏

我在一个actionfilter中的第一个请求中为TempData提供一个值. filterContext.Controller.TempData[value] = true; 之后,第二个请求进来,我检查的值 filterContext.Controller.TempData.ContainsKey(value) 价值在那里然后第三个请求进来,我再次检查该值 filte

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

本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/kaifa/asp-net/20201230/14619.html
上一篇
下一篇

作者: dawei

【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

返回顶部