ViewBag和ViewData的区别


在ASP.NET MVC3 中试图数据可以通过ViewBag属性访问,ViewBag是一个高效的封装了C# 4中新特性的dynamic关键字的封装器,
其中封装了ViewData,这样就可以使用类似属性访问的语法来检索字典中的值。
ViewBag.Message就等同于ViewData["Message"]
由于ViewBag是一个动态的值,这个动态的值不能作为一个参数传递给扩展的方法,因为C#编译器为了选择正确的扩张方法,必须在编译时知道每一个参数的真正类型。
如果其中一个参数是动态的,那么编译将会失败。
例如:@Html.TextBox("name",ViewBag.Name)总是编译失败,
想要通过编译有两种方法:

一种是使用ViewData["Name"]

另一种就是将ViewBag.Name转换成一种具体的类型,即(string)ViewBag.Name

原文地址:https://www.cnblogs.com/hccao/p/2872957.html