引入:
最近在看ITOO的代码,看到了ViewBag,就想知道它到底是干什么用的,了解到是从controller向view传值用的,就进行了一些查询。
介绍:
查资料了解到ASP.NET MVC中Controller向View传值的方式共有6种,分别是:
1、ViewBag
2、ViewData
3、TempData
4、向普通View页面传一个Model对象
5、向强类型页面传传一个Model对象
6、用一个ViewModel对象解决所有问题
ViewData和ViewBag的区别:
1、ViewData是字典类型,赋值方式用字典方式,通过key值读取对应的value, ViewData["myName"]
2、ViewBag是动态类型,使用时直接添加属性赋值即可 ViewBag.myName
3、ViewBag和ViewData只在当前Action中有效,等同于View
4、ViewData和ViewBag 中的值可以互相访问,因为ViewBag的实现中包含了ViewData
在Controller中使用ViewBag:
public ActionResult UsingViewBag()
{
ViewBag.Title = " Using ViewBag";
ViewBag.ProjectName = "My Test Project";
ViewBag.ProjectDescription = "This is Test Project to demo Viewdata and viewbag details";
ViewBag.StartDate = new DateTime(2011, 1, 1);
ViewBag.TotalPrice = 1000;
ViewBag.TotalDays = 100;
Dictionary<string, string> stackholder = new Dictionary<string, string>();
stackholder.Add("Client", "Mr. Client");
stackholder.Add("Manager", "Mr. Joy");
stackholder.Add("Team Leader", "Mr.Toy");
stackholder.Add("Sr. developer", "Mr.dojoy");
stackholder.Add("developer", "Mr. nodoy");
ViewBag.stackholder = stackholder;
List<string> modules = new List<string>();
modules.Add("Admin module");
modules.Add("ShoppingCart module");
modules.Add("CMS module");
ViewBag.modules = modules;
return View();
}