Usuário com melhor resposta
Tentando passar valores da Controller para a Global.asax.cs

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
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
-
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".
- Sugerido como Resposta Juliano Nunes Silva Oliveira sexta-feira, 9 de dezembro de 2016 13:49
- Marcado como Resposta EliDev sexta-feira, 9 de dezembro de 2016 14:38
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
-
-
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".
- Sugerido como Resposta Juliano Nunes Silva Oliveira sexta-feira, 9 de dezembro de 2016 13:49
- Marcado como Resposta EliDev sexta-feira, 9 de dezembro de 2016 14:38