none
Variavel global em controller ASP.Net RRS feed

  • Pergunta

  • Eu tenho uma classe chamada global.cs que serve para guardar o ID do usuário enquanto estiver logado.

    using System;
    namespace ProjetoModeloDDD.MVC
    {
        class Global
        {
            public int usu_id = 0;
        }
    }

    E no UsuarioController.cs eu declaro a classe global como "oGlobal" e gravo o usu_id do usuario no login em Acesso(email, senha)

    using System.Collections.Generic;
    using System.Linq;
    using System.Web.Mvc;
    using AutoMapper;
    using ProjetoModeloDDD.Application.Interface;
    using ProjetoModeloDDD.Domain.Entities;
    using ProjetoModeloDDD.MVC.ViewModels;
    namespace ProjetoModeloDDD.MVC.Controllers
    {
        public class UsuarioController : Controller
        {
            Global oGlobal = new Global();
            private readonly IUsuarioAppService _usuarioApp;
            public UsuarioController(IUsuarioAppService usuarioApp)
            {
                _usuarioApp = usuarioApp;
            }
            // GET: usuarios
            public ActionResult Index()
            {
                if (oGlobal.usu_id > 0)
                {
                    var usuarioViewModel = Mapper.Map<IEnumerable<tbl_usuario_usu>, IEnumerable<UsuarioViewModel>>(_usuarioApp.GetAll());
                    return View(usuarioViewModel);
                }
                else
                {
                    return Content("Acesso Negado");
                }
            }
            [HttpGet]
            public ActionResult Acesso()
            {
                return View();
            }
            [HttpPost]
            public ActionResult Acesso(string email, string senha)
            {
                var usuarioViewModel = Mapper.Map<tbl_usuario_usu, UsuarioViewModel>(_usuarioApp.Logar(email, senha));
                if (usuarioViewModel == null)
                {
                    return View();
                }
                else
                {
                    oGlobal.usu_id = usuarioViewModel.usu_id;
                }
                return View("Details", usuarioViewModel);
            }

    Mas na Index do controller a variavel oGlobal.usu_id está zerada de novo. Como eu mantenho o valor da variável?

    Eu preciso que os dados do usuário fiquem salvas em uma variável enquanto estiver logado.



    domingo, 3 de abril de 2016 19:43

Respostas

  • O ideal nessa caso seria utilizar Session, pois o id ficará armazenado a sessão do usuário. Ex:

    public int usu_id
    {
    	get
    	{
    		return (int)Session["usu_id"];
    	}
    	set
    	{
    		Session["usu_id"] = value;
    	}
    }

    domingo, 3 de abril de 2016 22:50

Todas as Respostas

  • O ideal nessa caso seria utilizar Session, pois o id ficará armazenado a sessão do usuário. Ex:

    public int usu_id
    {
    	get
    	{
    		return (int)Session["usu_id"];
    	}
    	set
    	{
    		Session["usu_id"] = value;
    	}
    }

    domingo, 3 de abril de 2016 22:50

  • Talvez Session não esteja disponível, então você pode usar desta forma:
    HttpContext.Current.Session["usu_id"]


    domingo, 3 de abril de 2016 22:52
  • Finalmente consegui. Apenas segui o tutorial abaixo.

    http://rafaelzaccanini.net.br/2014/11/11/asp-net-como-trabalhar-com-session-de-uma-forma-mais-elegante/

    Muito bom. Obrigado.

    segunda-feira, 4 de abril de 2016 01:10