Asp.net mvc ViewBag和ViewData比较

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中查询数据时不需要类型转换
有一些类型转换代码 可读性更好
ViewBag内部调用ViewData。

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.csdn.net/jasonhds/ 版权所有,翻版必究~谢谢合作!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章