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/ 版權所有,翻版必究~謝謝合作!

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