首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么tempData在tempData中添加许多项时总是为空?

为什么tempData在tempData中添加许多项时总是为空?
EN

Stack Overflow用户
提问于 2016-01-22 10:19:19
回答 1查看 1.6K关注 0票数 1

为什么TempData在TempData中添加许多项时总是为空?

我在控制器中的代码:

代码语言:javascript
复制
TempData[Partial1.TempDataKey] = "bla bla";
TempData[Partial2.TempDataKey] = "bla bla 2";

我在布局中的代码:

代码语言:javascript
复制
@{Html.RenderPartial(MVC.Administrator.Shared.Views._Partial1);}
@{Html.RenderPartial(MVC.Administrator.Shared.Views._Partial2);}

我在_Partial1中的代码:

代码语言:javascript
复制
<span>@(TempData.ContainsKey(Partial1.TempDataKey))</span>

我在_Partial2中的代码:

代码语言:javascript
复制
<span>@(TempData.ContainsKey(Partial2.TempDataKey))</span>

结果总是:

代码语言:javascript
复制
<span>False</span>
<span>False</span>

当我在控制器中删除它们时:

代码语言:javascript
复制
TempData[Partial1.TempDataKey] = "bla bla";
//TempData[Partial2.TempDataKey] = "bla bla 2";

结果是:

代码语言:javascript
复制
  <span>True</span>
EN

回答 1

Stack Overflow用户

发布于 2016-01-22 10:28:32

TempData中的变量在被访问后自动标记为删除。您可以通过显式调用备存方法来保留它们。

您可以使用TempDataDictionary对象以与使用ViewDataDictionary对象相同的方式传递数据。但是,除非使用方法标记一个或多个保留键,否则TempDataDictionary对象中的数据只会从一个请求持续到下一个请求。如果一个键被标记为保留,则为下一个请求保留该键。 TempDataDictionary对象的一个典型用途是在将数据重定向到另一个操作方法时从操作方法传递数据。例如,操作方法可能在控制器的TempData属性(返回TempDataDictionary对象)中存储有关错误的信息,然后调用RedirectToAction方法。然后,下一个操作方法可以处理错误并呈现一个显示错误消息的视图。

来源:TempDataDictionary类

因为我对它的生命周期很好奇,所以我浏览了源代码,并在博客上写了关于它的文章,如果我有兴趣进一步阅读:TempData在ASP.NET MVC 5中的内部工作

您还可以调用Peek方法来检索值并仍然保留它们。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34944237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档