Difference between MVC TempData, ViewData and ViewBag

MVC introduce Tempdata , Viewdata and Viewbag to maintain the View and controller. MVC is supported the framework that are loosely coupled and thing are class structure.
TempData: When we move from one controller to another controller or one action to another action Temp data help the to maintain the data between these type of redirect. Basically Template internally uses the Session variables with some with more features.
ViewData: This is object of ViewDataDictionary class and its type of dictionary object. ViewData is used to pass the data from controller to related view. The life of viewdata is available only for current request. After redirect completes its cycle value become null.

viewdata-viewbag and tempdata

ViewBag: It Uses dynamic internally basically ViewBag uses the dynamic feature of .net 4.0 feature.
This wrap around viewdata and Typecasting is not required in ViewBag for complex data. The life of viewdata is available current request after redirect completes its cycle value become null.
Define In controller :

public ActionResult Index()
{
    ViewBag. Author = "Pavan";
    return View();
}
 public ActionResult Index()
{
    ViewData["Author"] = " Pavan ";
    return View();
}
public ActionResult Index()
{
    TempData["Author"] = " Pavan ";
    return View();
}

How to retrieve controller set values in view:

@ViewBag.Author
@ViewData["Author"]

Retrieve Template value from one controller to another:

public ActionResult About()
{
    var model= TempData["Author "];
    return View(model);
}

Author: Pavan

I am asp.net developer have good knowledge of Asp.net ver 05,08,10 and good hand in sql server.Proficient in Object Oriented Programming and javascript, jQuery. Achievements - Integrate Spotfire, appnexus API ASP.net with sql server. Hobbies - Blogging ,Games, Movies ,Teaching,Keeping myself update with new technologies