Phân biệt ViewBag, ViewData, TempData trong Asp.net mvc

Trong asp.net mvc có 3 khái niệm mới đó là:  ViewBag, ViewData,  TempData. Khi sử dụng 3 từ khóa này bạn có thể truyền dữ liệu, số liệu từ View xuống controller một các đơn giản. Đây là một dạng truyền dữ liệu từ Request tới Next Request (Subsequen request). ViewBag và ViewData gần tương tự nhau, cũng không khác nhau nhiều về cách sử dụng.

Tìm hiểu ViewBag-ViewData

  • Giống nhau về cách sử dụng của ViewBag và ViewData:
    • Giúp bạn có thể chuyển dữ liệu từ Controller xuống View
    • Truyền dữ liệu từ Controller xuống View tương ứng
    • Chỉ sử dụng 1 lần duy nhất, sau khi dùng xong dữ liệu ở hai thằng này được giải phóng.
  • Khác nhau giữa ViewBag và ViewData:
    • ViewData là một dạng Dictionary, để truy cập vào biến bạn cần khai báo một key dạng string: ViewData[“Danhmuc”].
    • ViewBag: là một điểm mới trong Net Framework 4.0. Cho phép bạn định nghĩa các biến dạng Dynamic: ViewBag.DanhMuc.
    • ViewData: đòi hỏi bạn cần kiểm tra dữ liệu Null và chuyển đổi kiểu trước khi sử dụng
    • ViewBag: không đòi hỏi kiểm tra hay chuyển đổi kiểu (ép kiểu)

Các bạn xem ví dụ dưới đây: 

Ở dưới View: Hienthi.cshtml mình sẽ gọi như sau:

Như vậy chúng ta đã hiểu về sự khác nhau giữa ViewBag, ViewData. Thực ra thì hai thằng này không khác nhau là mấy. ViewBag được cái dùng nhanh hơn vì nó có kiểu Dynamic. Tôi thì hiện tại sử dụng ViewBag nhiều nó nhanh, đơn giản không mất công gõ code nhiều.

Tiếp theo chúng ta sẽ tìm hiểu về anh bạn TempData:

TempData cũng là một dạng Dictionary. Dữ liệu khai báo như ViewData, sử dụng cũng như vậy cần kiểm tra và ép kiểu trước khi sử dụng. Nó kiểu như một dạng Session nhưng mà có phiên sống ngắn, hay đúng hơn là 1 lần duy nhất sau khi sử dụng. Nếu muốn gia hạn sống cho TempData thì bạn cần phải dùng thêm lệnh Keep.

TempData có cái hay là mình dùng nó để di chuyển, move từ Controller này sang Controller khác hoặc từ Action này sang Action khác. Thường thì cái này hay được sử dụng cho một câu thông báo lỗi hay validate.

Các bạn xem ví dụ cụ thể dưới đây để được thấy cái hay của TempData:

Kết luận:

  • Để hiển thị dữ liệu từ controller xuống action, bạn có thể chọn Viewbag hay viewdata.
  • Để truyền 1 thông điệp, để truyền dữ liệu từ controller nay sang controller khác hay Action khác thì bạn dùng TempData.

phan-biet-viewbag-viewdata-tempdata-trong-asp-net-mvc

Các bạn xem hình để dễ hình dung hơn về sự khác nhau và cách sử dụng

 

Đánh giá của bạn

Add Comment