MVC ViewData和ViewBag

简介:
      视图数据可以通过ViewBag属性访问,它主要是为了从Controller到view进行传值用的,类似有所使用的ViewData[] 字典类。对于ViewBag是如此的强大,意味着你能动态的set/get 值,增加任何数量的的额外字段而不需要强类型的检测。如:

Controller

?
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" ] = "Hajan" ;
ViewData[ "age" ] = 25;
return View();
}

Controller

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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 = "Hajan" ;
ViewBag.Age = 25;
return View();
}

 你和上面的对比 你看见了不同吗?

View
对应前台视图:

1.使用ViewData

<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>

2.使用ViewBag

<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>
效果图:

ViewBag、ViewData 和 TempData 的区别:
ViewData 和 TempData 都可以传递弱类型数据,区别如下:
ViewData 只在当前 Action 中有效,生命周期和 View 相同;
TempData 的数据至多只能经过一次Controller传递,并且每个元素至多只能被访问一次,访问以后,自动被删除。
TempData 一般用于临时的缓存内容或抛出错误页面时传递错误信息,可以将TempData 在使用之前存储到相应的 ViewData 中以备循环使用。
目录
相关文章
|
5月前
|
存储 前端开发 Java
MVC知识分享
【6月更文挑战第6天】MVC知识分享
36 0
|
6月前
|
前端开发 搜索推荐 数据格式
什么是MVC
什么是MVC
|
11月前
mvc03
mvc03
43 0
|
前端开发 网络架构
什么是MVC-02
什么是MVC-02
60 1
|
前端开发
【MVC】初识
【MVC】初识
65 0
|
前端开发 Java
|
设计模式 前端开发 Java
|
前端开发 程序员 API
浅析 MVC
MVC是三个字母的缩写,分别是Model(模型)、View(视图)和Controller(控制) 这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三类对象。 所有的页面都可以使用MVC来优化代码结构.
175 0
浅析 MVC
|
存储 开发框架 前端开发
MVC系列之开始
MVC系列之开始
152 0
MVC系列之开始
|
前端开发