ASP.NET MVC 3 được xây dựng trên nền tảng .NET Framework 4.0, và nó tận dụng được các tính năng mới của .NET 4.0, trong đó có kiểu dữ liệu dynamic. Trước đây bạn sẽ sử dụng thuộc tính ViewData để chuyển dữ liệu (model) cho View để render trang html. Bây giờ bạn sẽ có thêm thuộc tính ViewBag (kiểu dynamic).
Về căn bản hai cái này đều để lưu dữ liệu.
Thằng ViewData có thể lưu một kiểu giá trị nguyên thủy như int, string hay một list…
Cú pháp của ViewData:
ViewData["key"]=value;
Đối với một kiểu giá trị nguyên thủy thì khi hiển thị nó ra chỉ cần
@ViewData["key"]
Ví dụ ở controllers mình khai báo
ViewData["tieude"]="Xin Chao";
Bên View ta gọi ra như sau
@ViewData["tieude"]
View sẽ hiển thị là: Xin Chao
Tương tự như ViewBag cũng vậy.chỉ khác là ViewBag khai báo nó theo cú pháp sau: ViewBag.key
Ví dụ: ViewBag.tieude = “Xin Chao”
Bên View ta gọi hiển thị như sau:
@ViewBag.tieude
nhưng đối với khi lưu một List thì ViewData muốn hiển thị ra ta cần ép kiểu dữ liệu đó về kiểu dữ liệu gốc.
Ví dụ trong controllers:
var danhsach= new List { "Luong Cong Chien", "Nguyen Van A", "Tran Van B" }; ViewData["dulieu"] = danhsach;
Bên View muốn load ra thì làm như sau;
if(ViewData["dulieu"]!=null) { foreach(var item in (List)ViewData["dulieu"]) { @item } }
còn đối với thằng ViewBag thì khác.nó linh động hơn. Nếu ta gán cho nó kiểu dữ liệu nào thì nó sẽ nhận kiểu dữ liệu đó. Ví dụ:
var danhsach = new List { "Luong Cong Chien", "Nguyen Van A", "Tran Van B" }; ViewBag.dulieu = danhsach;
Hiển thị ở View:
if(ViewBag.dulieu!=null) { foreach(var item in ViewBag.dulieu) { @item } }
Nguồn: http://chiencong.com