【发布时间】:2012-05-07 18:16:50
【问题描述】:
谁能解释一下 TempData 在 MVC 中的用途。 我知道它的行为类似于 ViewBag,但除此之外它还能做什么。
【问题讨论】:
-
不知道你从哪里得到它“表现得像 ViewBag”的想法,因为它什么都不做。
标签: c# asp.net-mvc tempdata
谁能解释一下 TempData 在 MVC 中的用途。 我知道它的行为类似于 ViewBag,但除此之外它还能做什么。
【问题讨论】:
标签: c# asp.net-mvc tempdata
TempData 是一个非常短暂的实例,您应该 仅在当前和后续请求期间使用它!自从 TempData 以这种方式工作,您需要确定下一步是什么 请求将是,并且重定向到另一个视图是您唯一的时间 可以保证这一点。因此,使用 TempData 的唯一场景 当您重定向时,将可靠地工作。这是因为一个 重定向终止当前请求(并发送 HTTP 状态代码 302 对象移动到客户端),然后在服务器上创建一个新请求 为重定向视图提供服务。回首往事 HomeController 代码示例意味着 TempData 对象可以产生 结果与预期不同,因为下一个请求来源 不能保证。例如,下一个请求可以来自 完全不同的机器和浏览器实例。
http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications
【讨论】:
TempData 是一个字典对象,它派生自 TempDataDictionary 类并存储在短期会话中。
public TempDataDictionary TempData { get; set; }
它是ControllerBase类的一个属性,用于将数据从当前请求传递到后续请求(意味着从一个页面重定向到另一个页面)。 它的生命很短,直到目标视图完全加载为止。 它需要类型转换来获取数据并检查空值以避免错误。它仅用于存储一次性消息,如错误消息、验证消息。
【讨论】:
ViewBag
允许您创建动态属性
在控制器和视图之间传递数据
控制器
ViewBag.Name= "Lion";
查看
<div>
<h4>@ViewBag.Name</h4>
</div>
临时数据
TempData 是一个非常短暂的实例
您应该只在当前和后续请求期间使用它
TempData 字典用于在控制器动作之间共享数据
TempData["Name"] = "Lion";
【讨论】: