MVC C#TempData

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

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

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

ViewBag

允许您创建动态属性

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

调节器

ViewBag.Name= "Lion";

视图

 

@ViewBag.Name

TempData的

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

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

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

 TempData["Name"] = "Lion"; 

我写了关于this的博客文章。检查如何正确使用Asp.Net MVC TempData?

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

 public TempDataDictionary TempData { get; set; } 

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