In ASP.NET MVC there are three ways - ViewData, ViewBag and TempData to pass data from controller to view and in next request. Like WebForm, you can also use Session to persist data during a user session. Now question is that when to use ViewData, VieBag, TempData and Session. Each of them has its own importance. In this article, I am trying to explain the differences among these four.
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. To persist data with TempData refer this article: Persisting Data with TempData
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.
Summary
In this article I try to explain the difference between ViewData, ViewBag and TempData. I hope you will refer this article for your need. I would like to have feedback from my blog readers. Please post your feedback, question, or comments about this article.