Definir um TempData[] em nosso Global.asax

Autor : Antonio Carlos Ferreira de Azevedo
Postado em : 10/05/2016



TempData[] é uma propriedade da classe System.Web.Mvc.ControllerBase, se você não está em um Controller ela não é facilmente acessível, mas você pode chegar a ela uma vez que toda a cadeia que a define é construída pelo framework MVC.

TempData[] é gerenciado pela Sessão SessionStateTempDataProvider, você deve inserir o valor na sessão e depois tirá-lo.

Vamos inserir uma variável TempData['Mensangem'] quando nosso projeto for iniciado, esta variável pode ser recuperada em sua página e ser usada para exibir uma mensagem por exemplo.

Veja o código abaixo.

protected void Session_Start(object sender, EventArgs e)
{
    // Declara datakey com o tipo de controle
    var dataKey = "__ControllerTempData";
    var dataDict = HttpContext.Current.Session[dataKey] as IDictionary<string, object>;
    
    // Instancia o objeto caso nao exista    
    if (dataDict == null)
    {
         dataDict = new Dictionary<string, object>();
     }

    // Atribui sua mensagem ao TempData[]
    dataDict["Mensagem"] = "Sua Mensagem";
    
    // Atribui a seu TempData[] a sessao
    HttpContext.Current.Session[dataKey] = dataDict;
}


Pronto agora para recuperar sua mensagem em sua página basta acessa-la como TempData['Mensagem'].





Comentários