ViewBag 和 ViewData 的用法和区别

ViewBag 和 ViewData 的用法和区别
ViewData
ViewData 是一个特殊的字典类的名称,我们可以用标准的字典语法进行修改或赋值,比如: ViewData[“UserID”] = “Jack”;
ViewBag
ViewBag 是 asp.net mvc3 中对 ViewData 的一种动态封装,使用的方法更方便。它的赋值方法是:
ViewBag.UserID= “Jack”; 也就是说 ViewData[“UserID”] 和 ViewBag.UserID是一样的效果。
ViewBag 和 ViewData 的区别
虽说用 ViewBag 来代替 ViewData 使用着更快捷,但是相对于 ViewData 来说,ViewBag 还 是有一些不能用的地方: 1.ViewBag 要访问的必须是一个有效的标识符,否则无效。比如:ViewData[“Query Income”] 就不能使用 ViewBag 来访问。
动态值不能作为一个参数传递给扩展方法。因为 C#为了选择正确的扩展方法规定必须标 明每一个参数的类型。如果参数中有任何一个参数是动态的就无法通过编译。比如:
@Html.TextBox(“UserID”,ViewBag.UserID)就会编译失败。
解决方法:
将 ViewBag.UserID替换为 ViewData[“UserID”];
把 ViewBag.UserID替换为一个具体类型的参数:(string)ViewBag.UserID;

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

在这里插入图片描述
ViewData
ViewData 是一个继承自 ViewDataDictionary 类的 Dictionary 对象
ViewData 用来从 Controller 向对应的 View 传递值
ViewData 的只在当前当前的请求中有效,生命周期和 View 相同,其值不能在多个请求中共享
在重定向(redirection)后,ViewData 中存储的变量值将变为 null
在取出 ViewData 中的变量值是,必须进行合适的类型转换和空值检查
在这里插入图片描述

ViewBag
ViewBag 是一个动态类型变量(dynamic)
ViewBag 基本上是 ViewData 的包装,也是用来从 Controller 向 View 来传递值的
ViewBag 也只在当前的请求中有效
在重定向(redirection)后,ViewBag 中存储的变量值将变为 null
因为 ViewBag 是动态类型,所以我们在取得其值时,不需要进行类型转换

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值