ViewData | ViewBag |
它是Key/Value字典集合 | 它是dynamic类型对像 |
从Asp.net MVC 1 就有了 | ASP.NET MVC3 才有 |
基于Asp.net 3.5 framework | 基于Asp.net 4.0与.net framework |
ViewData比ViewBag快 | ViewBag比ViewData慢 |
在ViewPage中查询数据时需要转换合适的类型 | 在ViewPage中查询数据时不需要类型转换 |
有一些类型转换代码 | 可读性更好 |
1. 创建View Bag
在前一节的测试基础之上,使用以下代码代替第3步中的代码:
public ActionResult GetTeacherView()
{
Teacher t = new Teacher();
t.TeacherName = "谭浩强";
t.TeacherId = 1001;
t.TeacherAge = 60;
ViewBag.Teacher = t;
return View();
}
2、在View显示Teacher
使用以下代码来替代前一节中第4步中的代码:
@{
Mvc_一.Models.Teacher t = ViewBag.Teacher;
}
<b>Teacher Details:</b><br />
Teacher Name:@t.TeacherName<br />
Teacher Id:@t.TeacherId<br />
Teacher Age:@t.TeacherAge<br />
3、运行结果和上一节结果一样。
A | explian:
虽然ViewBag和ViewData可以在Controller和View之间传递内容,但它们并非最佳选择,ViewBag和ViewData的缺点有:
1、ViewData保存的是对象类型,使用之前需要进行强制转换为其对应类型,会增加额外的性能负担。
2、在MVC中Controller和View是松散的连接,View和Controller不能互相及时了解对方所做的变化。倘若Controller中传递一个ViewData或者ViewBag值时,开发人员正在View中写入内容,则必须记录下传递来的值,因此建议Controller和View是同一开发人员,否则会带来很多问题,降低开发效率。
转载请标明出处 http://blog.youkuaiyun.com/jasonhds/ 版权所有,翻版必究~谢谢合作!