ViewData 和TempData ,Session用法

开发工具与关键技术: 
班级:18级(4)班
撰写时间:2019.5.24

一.在ASP.NET MVC中,页面间和Controller与View之间主要有以下几种小量数据传值方式, ViewData、 ViewBag、TempData、Session 变量。 我们是幸运的,微软提供给了我们这么多传值方法,但选择越多越 让人抓狂,这些技术每一种都有自己的优点和缺点,我应该何时使用哪一种传值方式呢?
上面的这四种方法中,ViewData 和 ViewBag 其实是一回事, ViewBag 其实是对 ViewData 的封装, 其 内部其实是使用 ViewData 实现数据存储的。唯一的不同点是,ViewBag 可以存储动态类型(dynamic)的变量 值, 而 ViewData 只能存储 String Key/Object Value 字典数组。 所以我们可以将这四种方法归为三大类, ViewData 和 ViewBag, TempData, Session。
在这里插入图片描述
TempData 也是一个 String Key/Object Value 字典数组。 和 ViewData 与 ViewBag 不同的是其所存储 的数据对象的生命周期。 如果页面发生了跳转(Redirection),ViewBag 和 ViewData 中的值将不复存在, 但是 TempData 中的值依然还在。 换句话讲, ViewBag 和 ViewData 存储的值的生命周期只有在从 Controller 到 View 中, 而 TempData 中的数据不仅在从 Controller 到 View 中有效,在不同的 Action 之 间或者从一个页面跳转到另一页面(Controller to Controller)后依然有效。
在这里插入图片描述
Session 其实和 ViewData 类似,也是一个 String Key/Object Value 字典数组。但是,Session 是存 储在客户端的 Cookies 中,所以它的生命周期是最长的。 但是,正因为其存储的客户端, 所以必须确保 没有敏感机密的信息存储其中。
在这里插入图片描述
二.ViewDataViewData 是一个继承自 ViewDataDictionary 类的 Dictionary 对象。 • ViewData 用来从 Controller 向对应的 View 传递值。 • ViewData 的只在当前当前的请求中有效,生命周期和 View 相同,其值不能在多个请求中共享。 • 在重定向(redirection)后,ViewData 中存储的变量值将变为 null。 • 在取出 ViewData 中的变量值是,必须进行合适的类型转换(隐式或显式)和空值检查。
下面我们来看一个简单的例子,演示一下如何使用 ViewData 来从 Controller 向 View 传值。
在这里插入图片描述
然后。我们从视图中获取出这个变量。
在这里插入图片描述
执行后,将会在浏览器中看到如下图的结果。
在这里插入图片描述
ViewBag 更适合从 Controller 向 View 传递复杂对象数据时使用, 因为取出存储在其中的数据变 量时无需进行类型转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值