ViewBag和ViewData的用法和区别

来源:互联网 发布:2016中小企业数据统计 编辑:程序博客网 时间:2024/06/05 17:43

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;

0 0
原创粉丝点击