20

有人可以解释一下 MVC 中 TempData 的用途吗?我知道它的行为类似于 ViewBag,但除此之外它还能做什么。

4

3 回答 3

27

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

于 2012-05-07T19:32:19.690 回答
9

查看包

允许您创建动态属性

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

控制器

ViewBag.Name= "Lion";

看法

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

临时数据

TempData 是一个非常短暂的实例

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

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

TempData["Name"] = "Lion";
于 2012-10-18T16:46:42.680 回答
2

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

public TempDataDictionary TempData { get; set; }

它是ControllerBase 类的一个属性。它用于将数据从当前请求传递到后续请求(意味着从一个页面重定向到另一个页面)。它的生命很短,直到目标视图完全加载。获取数据和检查空值以避免错误需要进行类型转换。它仅用于存储一次性消息,如错误消息、验证消息。

于 2016-01-20T09:55:29.543 回答