在控制器之间传递TempData

时间:2014-11-24 03:53:23

标签: asp.net-mvc asp.net-mvc-5

我的问题很简单,TempData如何在不同的控制器之间传递?当然,因为控制器上下文不同,一个控制器不能访问另一个控制器中的tempdata,而tempdata可以简单地在单个控制器的上下文中在Action Results之间传递。

但是,让我们说这种情况需要交叉控制器通信OVER TempData,TempData是一个要求(无论是一个好的做法还是坏的做法),这可能吗?

3 个答案:

答案 0 :(得分:2)

是的,因为TempData是由SessionState支持的。 它本质上是会话状态的特殊情况,具有较短的寿命。

以下是类似的问题/答案Passing data between different controller action methods

答案 1 :(得分:0)

TempData是一个派生自TempDataDictionary类的字典,存储在短生命会话中,它是一个字符串键和对象值。不同之处在于物体的生命周期。 TempData保存HTTP请求时间的信息。这仅意味着从一个页面到另一个页面。这也适用于302/303重定向,因为它位于相同的HTTP请求中。当您从一个控制器移动到另一个控制器或从一个操作移动到其他操作时,有助于维护数据。换句话说,当您重定向时,“Tempdata”有助于维护这些重定向之间的数据

了解更多信息What is ViewData, ViewBag and TempData?

答案 2 :(得分:0)

我也在寻找这个。在我的情况下,我做了一个ajax请求,它将一些数据插入临时数据。之后我会用javascript重定向到不同的控制器/动作。退出一些搜索后我发现在我的情况下我不得不打电话

TempData.Keep();

这将保留下一个请求的临时数据,尽管您不使用RedirectToAction