MVC C#TempData

问题描述 投票:16回答:3

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

c# asp.net-mvc tempdata
3个回答
23
投票

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


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
投票

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

public TempDataDictionary TempData { get; set; }

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

© www.soinside.com 2019 - 2024. All rights reserved.