开发项目中,ASP.NET MVC传值方式总结如下:
ViewData与ViewBag的区别:
1、ViewData是字典类型,赋值方式用字典方式,通过key值读取对应的value,ViewData["myName"]
2、ViewBag是动态类型,使用时直接添加属性赋值即可ViewBag.myName
3、ViewBag和ViewData只在当前Action中有效,等同于View
4、ViewData和ViewBag中的值可以互相访问,因为ViewBag的实现中包含了ViewData
ViewBag
//ViewBag定义 public dynamic ViewBag { get { if (_dynamicViewData == null) { _dynamicViewData = new DynamicViewDataDictionary(() => ViewData); } return _dynamicViewData; } }
public ActionResult Index() { List<string>colors = new List<string>(); colors.Add("red"); colors.Add("green"); colors.Add("blue"); ViewBag.ListColors = colors; //colors is List ViewBag.DateNow= DateTime.Now; ViewBag.Name= "mumu"; ViewBag.Age = 25; return View(); }
<p> My name is <b>@ViewBag.Name</b>, <b>@ViewBag.Age</b> years old. <br /> I like the following colors: </p> <ul id="colors"> @foreach (var color in ViewBag.ListColors) { <li><font color="@color">@color</font> </li> } </ul> <p> @ViewBag.DateNow </p>
ViewData
//ViewData的定义 public ViewDataDictionary ViewData { get { if (_viewData == null) { SetViewData(new ViewDataDictionary()); } return _viewData; } set { SetViewData(value); } }
public ActionResult Index() { List<string> colors = new List<string>(); colors.Add("red"); colors.Add("green"); colors.Add("blue"); ViewData["listColors"] = colors; ViewData["dateNow"] = DateTime.Now; ViewData["name"] = "mumu"; ViewData["age"] = 25; return View(); }
<p> My name is <b>@ViewData["name"] </b>,<b>@ViewData["age"] </b>years old. <br /> I like the following colors: </p> <ul id="colors"> @foreach (var color in ViewData["listColors"] as List<string>) { <li><font color="@color">@color </font></li> } </ul> <p> @ViewData["dateNow"] </p>