Salvar dados de uma DownpDownList em uma ViewBag
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:
Necessito que o valor escolhido, fique salvo em outra ViewBag, para utilizar em outro filtro.
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
Curtidas 0
Respostas
Randrade
09/01/2015
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?
Alguém teria algum exemplo de como salvar os dados em uma ViewModel?
GOSTEI 0
Joel Rodrigues
09/01/2015
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]
GOSTEI 0
Randrade
09/01/2015
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.
Teria alguma ideia de como eu possa fazer isso?
Eu sei que é uma coisa simples, isso que me deixa com mais raiva... kkkk
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
GOSTEI 0
Randrade
09/01/2015
Consegui aqui.
Adicionei esses métodos aqui no meu controller, e funcionou.
Só tenho um problema, essa "ViewBag.UserContrato" só é visível na view Contrato. Como faço para utilizar ela nas demais?
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?
GOSTEI 0
Joel Rodrigues
09/01/2015
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.
GOSTEI 0
Randrade
09/01/2015
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:
Logo após criei um Helper para converter o valor da session e armazenar em uma variável.
Assim consigo armazenar e utilizar onde necessito.
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.
GOSTEI 0
Randrade
09/01/2015
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:
Logo após criei um Helper para converter o valor da session e armazenar em uma variável.
Assim consigo armazenar e utilizar onde necessito.
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.
GOSTEI 0