有人可以解释一下 MVC 中 TempData 的用途吗?我知道它的行为类似于 ViewBag,但除此之外它还能做什么。
3 回答
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.Name= "Lion";
看法
<div>
<h4>@ViewBag.Name</h4>
</div>
临时数据
TempData 是一个非常短暂的实例
您应该只在当前和后续请求期间使用它
TempData 字典用于在控制器动作之间共享数据
TempData["Name"] = "Lion";
TempData 是一个字典对象,它派生自 TempDataDictionary 类并存储在短期会话中。
public TempDataDictionary TempData { get; set; }
它是ControllerBase 类的一个属性。它用于将数据从当前请求传递到后续请求(意味着从一个页面重定向到另一个页面)。它的生命很短,直到目标视图完全加载。获取数据和检查空值以避免错误需要进行类型转换。它仅用于存储一次性消息,如错误消息、验证消息。