Salvar dados de uma DownpDownList em uma ViewBag

09/01/2015

0

Olá pessoa,

Possuo um DropDownList vindo de uma consulta. Necessito gravar o dado selecionado em uma ViewBag para utilizar em outro método.

O DropDown, vem desta viewbag:
            ViewBag.Contrato = usuarioRepository.Lista.Where(u => u.sLogin == autenticacaoProvider.UsuarioAutenticado.Login).Select(u => u.SqContrato);


Necessito que o valor escolhido, fique salvo em outra ViewBag, para utilizar em outro filtro.
Randrade

Randrade

Responder

Posts

09/01/2015

Randrade

Pesquisei aqui, e vi que posso salvar os dados em uma ViewModel, e utilizar as propriedades dela para fazer o que necessito.

Alguém teria algum exemplo de como salvar os dados em uma ViewModel?
Responder

09/01/2015

Joel Rodrigues

Aqui tem um link interessante sobre ViewModels, acho que vai lhe ajudar: [url:descricao=ASP.Net MVC – View Model Pattern – Quando e como utilizar?]http://eduardopires.net.br/2013/08/asp-net-mvc-view-model-pattern-quando-e-como-utilizar/[/url]
Responder

09/01/2015

Randrade

Joel, o link foi bastante útil.

Porém, necessito salvar um valor selecionado pelo usuário em um DropDownList, na ViewModel. E é nesta parte que estou com dificuldades.

O DropdownList é pupulado por essa ViewBag.

@Html.DropDownList("Contrato", new SelectList(ViewBag.Contrato, "Contrato"))


Teria alguma ideia de como eu possa fazer isso?

Eu sei que é uma coisa simples, isso que me deixa com mais raiva... kkkk
Responder

09/01/2015

Randrade

Consegui aqui.
Adicionei esses métodos aqui no meu controller, e funcionou.

public ActionResult Contrato()
        {      
            var contrato = new Usuario() { SqContrato = 0 };

            return View(contrato);
        }

        [HttpPost]
        public ActionResult Contrato(Int16? Contrato)
        {
                
           ViewBag.UserContrato = Contrato;

            return View();
        }


Só tenho um problema, essa "ViewBag.UserContrato" só é visível na view Contrato. Como faço para utilizar ela nas demais?
Responder

12/01/2015

Joel Rodrigues

Reveja como funciona a ViewBag. Se você está precisando persistir esse dado durante toda a aplicação, não é o caso de usar a ViewBag, pois ela funciona apenas para uma requisição e depois é apagada. Neste caso, acredito que você precise da Session.
Responder

12/01/2015

Randrade

Eu consegui fazer aqui já, só esqueci de postar a solução!

Criei uma Session onde eu consigo o valor selecionado, no lugar da ViewBag em meu controller:
System.Web.HttpContext.Current.Session["Contrato"] = Contrato;


Logo após criei um Helper para converter o valor da session e armazenar em uma variável.
 public static class SessionHelper
    {
        public static int Contrato
        {
            get {  return Convert.ToInt16(HttpContext.Current.Session["Contrato"]); }
            set { HttpContext.Current.Session["Contrato"] = value; }
        }
    }[/code


E por fim, retorno o meu Helper como variável e adiciono ele na consulta:
[code] public ViewResult Ferias()
        {
            var contrato = SessionHelper.Contrato;

            var usuarios =
                funcionarioFeriasRepository.Lista.Where(r => r.slogin == autenticacaoProvider.UsuarioAutenticado.Login && r.SqContrato == contrato).OrderBy(u => u.DtInicioConcessao)
                    .ToList();

            return View(usuarios);
        }


Assim consigo armazenar e utilizar onde necessito.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar