none
Tentando passar valores da Controller para a Global.asax.cs RRS feed

  • Pergunta

  • Quando tento passar alguma valor de minha controller para a Global.asax.cs os valores recebidos na global são sempre nulos.

    Controller: 

     

    public class LoginController : Controller

       {

    DataContext db = new DataContext(); 

    public ActionResult Index()  

    {  

    MvcApplication M = new MvcApplication()

    var U = db.usuarios.single(u=> u.Id == 1);

    M.SetCarregarDadosUsuario(U);

    }

    }

    Global:

     

      public class MvcApplication : System.Web.HttpApplication {

     public Usuarios usuarioSession = new Usuarios();

    protected void Application_AcquireRequestState()        {

    if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState){

    CarregarDadosUsuario();} 

    }

    private void CarregarDadosUsuario(){

    if(usuarioSession.Id >0){                   

    var loadU = GetCarregarDadosUsuario();                   

    HttpContext.Current.Session.Add("UsuarioImagem", loadU.UrlImg);                   

    HttpContext.Current.Session.Add("UsuarioNome", loadU.Nome);                   

    HttpContext.Current.Session.Add("UsuarioSessao", loadU.SessaoID);                   

    HttpContext.Current.Session.Add("UsuarioFilial", loadU.FilialID);           

    }       

    }       

    public void SetCarregarDadosUsuario(Usuarios user) {           

    this.usuarioSession = user;                          

    }       

    public Usuarios GetCarregarDadosUsuario(){           

    return this.usuarioSession;       

    }   

    }


    Gostaria de saber como faço para passar um lavor de minha Controller para a Globlal.asax.cs para preencher minhas sessões.

    Acrescentando, estou utilizando sessões para guardar o caminho de uma imagem por exemplo:

    Arquivo _layout:

      <div class="user-img-div user-basic basic-perfil-borda">
                                        <img src="/Content/NewTheme/img/@Session["UsuarioImagem"]" class="img-thumbnail" />
    
    </div>
    
    



    • Editado EliDev sexta-feira, 9 de dezembro de 2016 13:31
    sexta-feira, 9 de dezembro de 2016 12:30

Respostas

  • Não sou a favor de usar o Global.asax.cs para isto, mas...

    Segue sugestão

    public class MvcApplication : System.Web.HttpApplication
    {
    	public static void GravarDadosUsuario(Usuarios user)
    	{
    		HttpContext.Current.Session["DadosUsuario"] = user;
    	}
    	
    	public static Usuarios RetornarDadosUsuario()
    	{
    		return HttpContext.Current.Session["DadosUsuario"] as Usuarios;
    	}
    }
    
    
    
    //Dai na sua página
    var usuario = MvcApplication.RetornarDadosUsuario();
    //usuario.Nome
    //usuario.SessaoID


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    • Marcado como Resposta EliDev sexta-feira, 9 de dezembro de 2016 14:37
    sexta-feira, 9 de dezembro de 2016 12:49
  • Esta forma que postei acima é uma delas, mas você não precisa usar o Global.asax.cs para ter acesso de leitura e gravação na sessões.

    Se quiser centralizar, eu criaria uma classe separada e utilizaria propriedades estáticas para as sessões.

    Tipo:

    public static String Nome
    	{
    		get
    		{
    			return Session["NOME"];
    		}
    		set
    		{
    			Session["NOME"] = value;
    		}
    	}


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    sexta-feira, 9 de dezembro de 2016 13:27

Todas as Respostas

  • Não sou a favor de usar o Global.asax.cs para isto, mas...

    Segue sugestão

    public class MvcApplication : System.Web.HttpApplication
    {
    	public static void GravarDadosUsuario(Usuarios user)
    	{
    		HttpContext.Current.Session["DadosUsuario"] = user;
    	}
    	
    	public static Usuarios RetornarDadosUsuario()
    	{
    		return HttpContext.Current.Session["DadosUsuario"] as Usuarios;
    	}
    }
    
    
    
    //Dai na sua página
    var usuario = MvcApplication.RetornarDadosUsuario();
    //usuario.Nome
    //usuario.SessaoID


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    • Marcado como Resposta EliDev sexta-feira, 9 de dezembro de 2016 14:37
    sexta-feira, 9 de dezembro de 2016 12:49
  • Como vc faria para guardar as sessões é poder utilizadas no por todo o projeto? 
    • Marcado como Resposta EliDev sexta-feira, 9 de dezembro de 2016 13:39
    • Não Marcado como Resposta EliDev sexta-feira, 9 de dezembro de 2016 14:38
    sexta-feira, 9 de dezembro de 2016 13:20
  • Esta forma que postei acima é uma delas, mas você não precisa usar o Global.asax.cs para ter acesso de leitura e gravação na sessões.

    Se quiser centralizar, eu criaria uma classe separada e utilizaria propriedades estáticas para as sessões.

    Tipo:

    public static String Nome
    	{
    		get
    		{
    			return Session["NOME"];
    		}
    		set
    		{
    			Session["NOME"] = value;
    		}
    	}


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    sexta-feira, 9 de dezembro de 2016 13:27