ViewData、ViewBag、TempData、Session 、强类型视图

ViewData和ViewBag是一回事, ViewBag其实是对ViewData的封装, 其内部其实是使用ViewData实现数据存储的。唯一的不同点是,ViewBag可以存储动态类型(dynamic)的变量值, 而ViewData只能存储String Key/Object Value字典数组。 所以我们可以将这四种方法归为三大类, ViewData和ViewBag, TempData, Session。

ViewData["key"]="What are you";

ViewBag.key="What are you";

在view中 获得值

因为ViewBag是对ViewData的封装,这两个所取得值是一样的,且只定义一个,另一个也可以取到值。

注:在取出ViewData中的变量值时,必须进行合适的类型转换(隐式或显式)和空值检查。

如果页面发生了跳转(Redirection),ViewBag和ViewData中的值将不复存在,ViewData、ViewBag的生命周期只有在从Controller到View中, 而TempData中的数据不仅在从Controller到View中有效,在不同的Action之间或者控制器中也有效

 

TempData和Session  


TempData["Message"] = "Hello ASP.NET MVC";

Session["Message"] = "Hello ASP.NET MVC";

TempData主要用来跨多个动作方法传递数据

TempData 数保存机制是Session,但与Session不完全相同。

  • TempData中保存的数据,如果被使用,就会被清除,因此后面的请求将不能再次使用。
  • TempData保存数据后,如果没有被使用,它的保存时间就是Session的生命周期。

Session

  • Session也是ASP.NET MVC程序传递值的一种方式,但与TempData不同,用户的整个会话中Session都不会过期。
  • Session在同一用户会话过程中的所有请求中有效,比如,刷新页面。
  • Session中的值也需要进行类型转换(隐式或显式)和非空检查。

Session的生命周期是最长的,但是它默认使用的是Cookies来存储数据,所以使用的时候必须注意数据保密的问题。

综上, Session主要用在需要在多个Controllers, Actions and Views共享数据(非敏感数据)时使用。

 

创建强类型View

1.控制器 Action中将对象传到View

 public ActionResult Test()
        {
            Students stu = new Students();            
            return View(stu);
        }

2.View的顶部添加引用模型(这里传递的类型Students与上一步传递的对象类型必须一致

3.视图中用Model.来引用

强类型视图多用于传递模型数据,不需要类型转换

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值