ViewBag和ViewData的用法和区别

ViewData

ViewData是一个特殊的字典类的名称,我们可以用标准的字典语法进行修改或赋值,比如:
ViewData["Name"] = "Jack";



ViewBag

ViewBag 是asp.net mvc3中对ViewData的一种动态封装,用法更方便。他的赋值方法是:
ViewBag.Name = "Jack";
也就是说ViewData["Name"] 和 ViewBag.Name是一样的效果。



ViewBag和ViewData的区别

虽说用ViewBag来代替ViewData使用着更快捷,但是相对于ViewData来说,ViewBag还是有一些不能用的地方:


1.ViewBag要访问的必须是一个有效的标识符,否则无效。比如:ViewData["Query Income"]就不能使用ViewBag来访问。因为“Query Income”中有无效的C#标识符 空格。

2.动态值不能作为一个参数传递给扩展方法。因为C#为了选择正确的扩展方法规定必须标明每一个参数的类型。如果参数中有任何一个参数是动态的就无法通过编译。比如:

@Html.TextBox("Name",ViewBag.Name)就会编译失败。

解决方法:

① 将ViewBag.Name替换为ViewData["Name"];

② 把ViewBag.Name替换为一个具体类型的参数:(string)ViewBag.Name;


欢迎分享,(联系QQ/微信:996991818)

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论