MVC C#TempData

时间:2012-05-07 18:16:50

标签: c# asp.net-mvc tempdata

有人可以在MVC中解释TempData的用途。 我知道它的行为与ViewBag相似,但除此之外还有什么作用。

3 个答案:

答案 0 :(得分:23)

  

TempData意味着一个非常短暂的实例,你应该这样做   仅在当前和后续请求期间使用它!以来   TempData以这种方式工作,你需要知道下一步是什么   请求将是,并且重定向到另一个视图是唯一的时间   可以保证这一点。因此,使用TempData的唯一场景   当您重定向时,将可靠地工作。这是因为a   重定向终止当前请求(并发送HTTP状态代码302   对象移动到客户端),然后在服务器上创建新请求   为重定向的视图提供服务。回顾过去   HomeController代码示例意味着TempData对象可以产生   结果与预期不同,因为下一个请求来源   无法保证。例如,下一个请求可以源自   一个完全不同的机器和浏览器实例。

http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications

答案 1 :(得分:9)

<强> ViewBag

允许您创建动态属性

在控制器和视图之间传递数据

<强> 控制器

ViewBag.Name= "Lion";

<强> 查看

<div>
  <h4>@ViewBag.Name</h4>
 </div>

<强> TempData的

TempData意味着一个非常短暂的实例

您只应在当前和后续请求期间使用它

TempData字典用于在控制器操作之间共享数据

TempData["Name"] = "Lion";

我写了关于此的博文。检查How to use Asp.Net MVC TempData Properly ?

答案 2 :(得分:2)

TempData是一个字典对象,派生自TempDataDictionary类并存储在短期会话中。

public TempDataDictionary TempData { get; set; }

它是ControllerBase类的一个属性。它用于将数据从当前请求传递到后续请求(意味着从一个页面重定向到另一个页面)。 它的生命非常短暂,只有在目标视图满载之前才会存在。 需要进行类型转换以获取数据并检查空值以避免错误。它仅用于存储错误消息,验证消息等一次性消息。