Hello Geeks!
This series of articles is a sub-series of my MVC article series. This series contains all the terminologies, acronyms and terms usually used in the MVC Framework. Knowledge of these is as important as knowing Model-View-Controller.
So just go through these, until I present a next article in the series "MVC for Beginners".
Getting a Theme
For accessing the previous articles, kindly go through the following articles:
Quick View
This article will provide you a brief introduction to all these three important parts of MVC view. I have included reference examples, some important points and a diagram representation of how they work.
So let's go through this.
ViewData
Data travels from the controller to the view via a ViewDataDictionary. This ViewDataDictionary is a dictionary class; we call this class "ViewData".
![]()
It is a dictionary object derived from ViewDataDictionary.
![]()
Example
ViewData["Message"] = “Say Hello to C# Corner”;
(This will give you the message "Say Hello to C# Corner".)
Or
ViewData["CurrentTime"] = DateTime.Now;
(On the other hand this will show you the current date-time of your system.)
Pin Points
- It is a dictionary object that is derived from ViewDataDictionary
- It was introduced in MVC 1.0
- Passes the data from the controller to the view
- It's a Key-Value-Collection object
- It requires type casting for:
- Checking NULL values
- Getting Data
- Avoiding Errors
- Proceeds until the current request (only)
ViewBag
ViewBag is just a dynamic wrapper around ViewData. With it you don't need to write the dynamic keyword, it takes the dynamic keyword internally.
We often call ViewBag "A dynamic data library".
![]()
It is a wrapper around ViewData.
![]()
Public object ViewBag { get; }
Example
ViewBag.Message = “Say Hello to C# Corner”;
(This will give you the message "Say Hello to C# Corner")
Or
ViewBag.CurrentTime = DateTime.Now;
(On the other hand this will show you the current date-time of your system.)
Pin Points
- It is a dynamic property
- A wrapper around ViewData
- It was introduced in MVC 3.0
- It is a type object
- Doesn't require type casting
- Proceeds until the current request (only)
- Take advantages of C# 4.0
TempData
TempData helps in maintaining data when you move from one controller to another controller. For maintaining data it uses a session variable (internally).
It is a dictionary object that is derived from ViewDataDictionary.
![]()
Pin Points
- It is also a dictionary object (derived from TempDataDictionary)
- It's a Key-Value-Collection object
- It was introduced in MVC 1.0
- It requires typecasting for:
- Getting Data
- Check NULL values
- Avoiding Errors
- It is used to store one time messages like
- Error Messages
- Validation Messages
- It's life is very short
Complete scenario
This image represents how ViewData, ViewBag and TempData actually work with the View and Controller in MVC.
![]()
Data maintenance
This table represents the data maintenance between a controller and a view in various aspects/scenarios.
![]()