Usando o Tempdata no ASP.NET MVC - Melhor prática

Eu estou usando o asp.net MVC 3 para construir um aplicativo da web.

O que eu estou tentando fazer é passar valores entre dois controladores, embora existam muitas maneiras de fazer isso, eu estou particularmente interessado em usarTempData por esta.

public ActionResult Action1()
{
    string someMessage;
    Test obj = SomeOperation();
    if(obj.Valid)
    {
        someMessage = obj.UserName;
    }
    else
    {
        someMessage = obj.ModeratorName;
    }

    TempData["message"] = someMessage;

    return RedirectToAction("Index");
}

public ActionResult Index()
{
    ViewBag.Message = TempData["message"]

    return View();
}

Então é o uso deTempData aqui correto? Quero dizer, sob as melhores práticas de programação é esta maneira correta de usarTempData ?

Em que casos em tempo realTempData ser usado ?

Nota : Eu passei pelos links a seguir

Quando usar TempData vs Session no asp.net MVChttp://www.gregshackles.com/2010/07/asp-net-mvc-do-you-know-where-your-tempdata-is/

obrigado

questionAnswers(3)

yourAnswerToTheQuestion