为什么TempData在TempData中添加许多项时总是为空?
我在控制器中的代码:
TempData[Partial1.TempDataKey] = "bla bla";
TempData[Partial2.TempDataKey] = "bla bla 2";我在布局中的代码:
@{Html.RenderPartial(MVC.Administrator.Shared.Views._Partial1);}
@{Html.RenderPartial(MVC.Administrator.Shared.Views._Partial2);}我在_Partial1中的代码:
<span>@(TempData.ContainsKey(Partial1.TempDataKey))</span>我在_Partial2中的代码:
<span>@(TempData.ContainsKey(Partial2.TempDataKey))</span>结果总是:
<span>False</span>
<span>False</span>当我在控制器中删除它们时:
TempData[Partial1.TempDataKey] = "bla bla";
//TempData[Partial2.TempDataKey] = "bla bla 2";结果是:
<span>True</span>发布于 2016-01-22 10:28:32
TempData中的变量在被访问后自动标记为删除。您可以通过显式调用备存方法来保留它们。
您可以使用TempDataDictionary对象以与使用ViewDataDictionary对象相同的方式传递数据。但是,除非使用方法标记一个或多个保留键,否则TempDataDictionary对象中的数据只会从一个请求持续到下一个请求。如果一个键被标记为保留,则为下一个请求保留该键。 TempDataDictionary对象的一个典型用途是在将数据重定向到另一个操作方法时从操作方法传递数据。例如,操作方法可能在控制器的TempData属性(返回TempDataDictionary对象)中存储有关错误的信息,然后调用RedirectToAction方法。然后,下一个操作方法可以处理错误并呈现一个显示错误消息的视图。
因为我对它的生命周期很好奇,所以我浏览了源代码,并在博客上写了关于它的文章,如果我有兴趣进一步阅读:TempData在ASP.NET MVC 5中的内部工作
您还可以调用Peek方法来检索值并仍然保留它们。
https://stackoverflow.com/questions/34944237
复制相似问题