我是靠谱客的博主 害怕小馒头,最近开发中收集的这篇文章主要介绍ViewData,ViewBag,TempData的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MVC中有常用的有ViewData,ViewBag,TempData当然还有Session。

1、ViewBag与ViewData的相同点

1、都可以用于Controller到View传递信息。
2、保存时间都是短暂的,当发生重定向或者跳转之后相应的信息都会不存在。

2、ViewBag与ViewData的不同点

1、ViewData是一个字典对象类型(dictionary),它是ViewDataDictionary的子类,键值为字符串。
2、ViewBag是一个dynamic属性,dynamic是C# 4.0新增加的,ViewBag可以充分利用C# 4.0 dynamic的特性。
3、ViewData如果是存储的复杂类型的对象,在前台使用的时候需要类型转换,然后在调用其方法或者属性的时候是要加上是否为null检查,不然当为null时会报错。
4、ViewBag不需要空null检查,但是如果是复杂类型对象,要调用里面的方法或者属性也要进行类型转换。

3、TempData

TempData也是一个字典类型,继承于TempDataDictionary类,TempData与ViewBag,ViewData最大的区别是变量的存在的生命周期。当我们的在Controller或Action之间跳转的时候,TempData可以帮我们保存数据信息,而这些ViewTag和ViewData是做不到的。TempData和ViewData一样在前台使用的时候需要类型转换,然后在调用其方法或者属性的时候是要加上是否为null检查,不然当为null时会报错。

ViewData 只在当前 Action 中有效,生命周期和 View 相同;

TempData  的数据至多只能经过一次Controller传递,并且每个元素至多只能被访问一次,访问以后,自动被删除。

TempData  一般用于临时的缓存内容或抛出错误页面时传递错误信息,可以将TempData 在使用之前存储到相应的 ViewData 中以备循环使用。从TempData中通过索引器取值后,可以通过Keep或Peek方法,将该临时数据保留不删除。如果tempdata使用后还想供下一个请求使用,可以通过调用TempData.Keep()TempData.Keep("key")保留至下一次请求。还可以通过TempData.Peek()读取,这种方式同样会保留至下一次请求。

Session和TempData是key、value形式的字典类型,但是它的周期比较长,是网站会话级别的,当Session设置了值,如果没有到期或者清空key,就可以在接下来的所有页面使用。好处是Session存储的地方也可以根据自己的需要存储到内存或数据库。

最后

以上就是害怕小馒头为你收集整理的ViewData,ViewBag,TempData的区别的全部内容,希望文章能够帮你解决ViewData,ViewBag,TempData的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部