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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar