当前位置:  开发笔记 > 后端 > 正文

ViewData和TempData之间的区别?

如何解决《ViewData和TempData之间的区别?》经验,为你挑选了3个好方法。

我知道ViewData是什么并且一直使用它,但在ASP.NET Preview 5中他们引入了一些名为TempData的新东西.

我通常强烈地键入我的ViewData,而不是使用对象字典方法.

那么,我何时应该使用TempData而不是ViewData?

对此有什么最佳做法吗?



1> Dragan Panjk..:

用一句话来说:TempData就像ViewData有一点不同:它们只包含两个连续请求之间的数据,之后它们被销毁.您可以使用TempData传递错误消息或类似的东西.

虽然过时,但本文对TempData生命周期有很好的描述.

正如本·谢里曼在这里所说:

TempData是一个会话支持的临时存储字典,可用于单个请求.在控制器之间传递消息非常棒.



2> Captain Sens..:

当操作返回RedirectToAction结果时,它会导致HTTP重定向(相当于Response.Redirect).在单个HTTP重定向请求期间,数据可以保留在控制器的TempData属性(字典)中.


@Ismail:不,ViewData不会通过Redirect保存数据.这是TempData的主要区别.

3> Ali Adravi..:

ViewData的:

ViewData 是字典类型 public ViewDataDictionary ViewData { get; set; }

它可用于将数据从控制器传递到视图,仅限于一种方式

它的生命只在当前的要求中存在

如果传递字符串则无需进行类型转换

如果传递对象然后你需要对它进行类型转换,但在此之前你需要检查它是否为空

它是一个属性ControllerBase,是Controller类的父类

TempData的:

    TempData内部使用TempDataDictionary:public TempDataDictionary TempData { get; set; }

    将数据保存到TempDataDictionary对象后:

    它会持续存在,可以从任何视图或任何控制器中的任何操作中读取

    它只能读一次; 一旦阅读,它就变为空

    它被保存到会话中,因此在会话数据到期时会丢失.

此行为是ASP.NET MVC 2及更高版本的新增功能.在早期版本的ASP.NET MVC中,值TempData仅在下一个请求之前可用.

    它一直存在,直到它被读取或会话到期并且可以从任何地方读取.

详细了解MVC中ViewData,ViewBag,TempData和Session的比较

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有