In this article, you will learn what is the difference between ViewBag
, ViewData
and TempData
in ASP.NET MVC. This is one of the most asked interview questions if you are preparing for an ASP.NET Interview Questions. ViewData
, ViewBag
and TempData
are used for passing data and objects in various scenarios.
The following are the scenarios where you can use these objects.
ViewBag
is a dynamic property that takes advantage of the new dynamic features in C# 4.0. ViewBag
is used for passing data from the Controller to the corresponding View.ViewBag
, there is no need for Type Casting the data.ViewBag
is just a wrapper around the ViewData.ViewBag
is available only for Current Requests. The value of ViewBag
will become null
while redirecting.Public ActionResult Index()
{
ViewBag.Title = "Welcome To Tutorialsrack";
return View();
}
You can call this on the corresponding View like this:
<h2>@ViewBag.Title</h2>
ViewData
is a dictionary of objects that are derived from ViewDataDictionary
class and is accessible using strings as keys.ViewData
is used for passing data from the Controller to the corresponding View.ViewData
, it requires typecasting for complex data types and also requires null
checks for null
values to avoid exceptions.ViewData
is available only for Current Requests. The value of ViewData
will become null
while redirecting.Public ActionResult Index()
{
ViewData["Title"] = "Welcome To Tutorialsrack";
return View();
}
You can call this on the corresponding View like this:
<h2>@ViewData["Title"]</h2>
TempData
is also a dictionary derived from TempDataDictionary
class and stored in short lives sessions and it is a string key and object value.TempData
is used to pass the data from one action to another action in the same Controller or different Controllers as well as Controller to View. TempData
, it requires typecasting for complex data type and also requires null
checks for null
values to avoid exceptions.TempData
internally uses session variables.TempData
is available for Current and Subsequent Requests. It will not be destroyed on redirection. TempData
the scope is limited to the next request and if you want TempData
to be available even further, you should use Keep()
and Peek()
.Learn More About Keep() vs Peek()
public ActionResult Index()
{
TempData["Title"] = “Welcome To Tutorialsrack”;
return RedirectToAction("About");
}
public ActionResult About()
{
var message= TempData["Title"];
return View();
}
The difference Between ViewData vsViewBag vs TempData are as follows:
ViewData |
ViewBag |
TempData |
It is a Key-Value Dictionary collection |
ViewBag is a dynamic property |
It is a Key-Value Dictionary collection |
ViewData is a dictionary object and it is a property of ControllerBase class |
ViewBag is the Dynamic property of the ControllerBase class. |
TempData is a dictionary object and it is a property of the ControllerBase class. |
ViewData is introduced in MVC 1.0 and available in MVC 1.0 and above |
ViewBag is introduced in MVC 3.0 and available in MVC 3.0 and above |
TempData is also introduced in MVC1.0 and available in MVC 1.0 and above. |
ViewData also works with .net framework 3.5 and above |
ViewBag only works with .net framework 4.0 and above |
TempData also works with .net framework 3.5 and above |
Its requires typecasting |
ViewBag is a dynamic property, so there is no need for typecasting |
Its requires typecasting |
Its value becomes null if a redirection has occurred. |
Its value also becomes null if a redirection has occurred. |
TempData is used to pass data between two consecutive requests. |
It is available only for Current Request |
is available only for Current Request |
TempData only works during the current and subsequent request |
I hope this article will help you to understand what is the difference between ViewBag, ViewData, and TempData in ASP.NET MVC.
Share your valuable feedback, please post your comment at the bottom of this article. Thank you!
Comments