Array
(
)

Salvar dados de uma DownpDownList em uma ViewBag

Randrade
   - 09 jan 2015

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:
#Código 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
   - 09 jan 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?

0
|
0

Joel Rodrigues
   - 09 jan 2015

Aqui tem um link interessante sobre ViewModels, acho que vai lhe ajudar: ASP.Net MVC – View Model Pattern – Quando e como utilizar?

0
|
0

Randrade
   - 09 jan 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.

#Código@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

0
|
0

Randrade
   - 09 jan 2015

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

#Códigopublic 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?

0
|
0

Joel Rodrigues
   - 12 jan 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.

0
|
0

Randrade
   - 12 jan 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:
#CódigoSystem.Web.HttpContext.Current.Session["Contrato"] = Contrato;

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


E por fim, retorno o meu Helper como variável e adiciono ele na consulta:
#Código 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.

0
|
0