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