有人可以在MVC中解释TempData的用途。 我知道它的行为与ViewBag相似,但除此之外还有什么作用。
答案 0 :(得分:23)
TempData意味着一个非常短暂的实例,你应该这样做 仅在当前和后续请求期间使用它!以来 TempData以这种方式工作,你需要知道下一步是什么 请求将是,并且重定向到另一个视图是唯一的时间 可以保证这一点。因此,使用TempData的唯一场景 当您重定向时,将可靠地工作。这是因为a 重定向终止当前请求(并发送HTTP状态代码302 对象移动到客户端),然后在服务器上创建新请求 为重定向的视图提供服务。回顾过去 HomeController代码示例意味着TempData对象可以产生 结果与预期不同,因为下一个请求来源 无法保证。例如,下一个请求可以源自 一个完全不同的机器和浏览器实例。
http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications
答案 1 :(得分: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 :(得分:2)
TempData是一个字典对象,派生自TempDataDictionary类并存储在短期会话中。
public TempDataDictionary TempData { get; set; }
它是ControllerBase类的一个属性。它用于将数据从当前请求传递到后续请求(意味着从一个页面重定向到另一个页面)。 它的生命非常短暂,只有在目标视图满载之前才会存在。 需要进行类型转换以获取数据并检查空值以避免错误。它仅用于存储错误消息,验证消息等一次性消息。