ViewData vs ViewBag vs TempData vs Session

In MVC there are three ways - ViewData, ViewBag and TempData to pass data from controller to view . We can also use Session to persist data during a user session.


ViewData
  • ViewData is a dictionary object that is derived from ViewDataDictionary class.
     public ViewDataDictionary ViewData { get; set; }
  • ViewData is a property of ControllerBase class.
  • ViewData is used to pass data from controller to corresponding view.
  • It’s life lies only during the current request.
  • If redirection occurs then it’s value becomes null.
  • It’s required typecasting for getting data and check for null values to avoid error.


ViewBag
  • ViewBag is a dynamic property that takes advantage of the new dynamic features in C# 4.0.
  • Basically it is a wrapper around the ViewData and also used to pass data from controller to corresponding view.
     public Object ViewBag { get; }
  • ViewBag is a property of ControllerBase class.
  • It’s life also lies only during the current request.
  • If redirection occurs then it’s value becomes null.
  • It doesn’t required typecasting for getting data.


TempData
  • TempData is a dictionary object that is derived from TempDataDictionary class and stored in short lives session.
  • public TempDataDictionary TempData { get; set; }
  • TempData is a property of ControllerBase class.
  • TempData is used to pass data from current request to subsequent request (means redirecting from one page to another).
  • It’s life is very short and lies only till the target view is fully loaded.
  • It’s required typecasting for getting data and check for null values to avoid error.
  • It is used to store only one time messages like error messages, validation messages. 
Session


  • Session is an object that is derived from HttpSessionState class.
         public HttpSessionState Session { get; }
  • Session is a property of HttpContext class.
  • Session is also used to pass data within the ASP.NET MVC application and Unlike TempData, it never expires.
  • Session is valid for all requests, not for a single redirect.
  • It’s also required typecasting for getting data and check for null values to avoid error.

Comments

Popular posts from this blog

How to retain the data annotations or class during modify a table in the database

Interview Questions

AJAX CONTROL