none
Biding em dropdownlist RRS feed

  • Pergunta

  • Buenas galera ;)

    Bom estou curioso para saber uma melhor forma de fazer esse biding na minha pagina de cadastro.
    O cenário é o seguinte:

    Na minha view(fortemente timpada) tenho o seguinte trecho

    <td>
      <%: Html.DropDownListFor(model => model.Sistema.IdSistema,ViewData["Sistema"] as SelectList,"Selecione um Sistema")%>
    </td>
    

    Tenho esse dropdownlist que rebece os sistemas cadastrado no meu banco de dados, que vem assim do controller:

    ViewData["Sistema"] = new SelectList(_fachadaSistema.Todos(), "IdSistema", "Nome");
    

    Tudo bem, ele mostra certinho.

    Na hora do submit, na minha action Criar, seguinte:

    [HttpPost]
    public ActionResult Criar(Release release)
    {
      _fachadaRelease = new FachadaRelease(Ctx);
      _fachadaUsuario = new FachadaUsuario(Ctx);
      _fachadaSistema = new FachadaSistema(Ctx);
    
      release.DataCadastro = DateTime.Now;
      release.Sistema = _fachadaSistema.ObterPorId(release.Sistema.IdSistema);
      release.Usuario = _fachadaUsuario.ObterPorId(((Usuario)Session["Usuario"]).IdUsuario);
      foreach (var pendencia in ((List<Pendencia>)Session["PendenciasDeRelease"]))
      {
        release.Pendencia.Add(pendencia);
      }
      _fachadaRelease.CadastrarRelease(release);
      var lista = new SelectList(_fachadaSistema.Todos(), "IdSistema", "Nome");
      lista.First(elemento => elemento.Value == release.Sistema.IdSistema.ToString()).Selected = true;
      ViewData["Sistema"] = lista;
      return View(release);
    }
    

    Nas linhas 17 a 19 faço repopulo a lista e seleciono o sistema que foi escolhido, se eu não fizer isso da erro, dizendo que ele espava um SelectList ao invez de Int32.

    Existe algum meio alternativo de fazer isso?
    Não se foquem so nessa parte, mais dicas são bem vindas.

    Obrigado desde já.


    Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
    Twitter: Me siga!!
    Blog:http://dotnettime.spaces.live.com/

    sexta-feira, 12 de novembro de 2010 15:04

Todas as Respostas

  • Olá Alberto,

     

    Existem diversas formas de se renderizar uma DDL em MVC, segue alguns exemplos que podem te auxiliar em seu código:

    Imaginando que sua View é tipada da seguinte forma:

    <%Usuario u = (Usuario)ViewData.Model;%>
    

     

    Podemos no Controller Passar na ViewData uma List de usuarios conforme abaixo:

    ViewData["ListaDeUsuarios"] = _db.Usuarios.ToList();
    

    E em sua View da seguinte forma:

    <%=Html.DropDownList("usuario", new SelectList((IEnumerable<Entidade>)ViewData["ListaDeUsuarios"], "codUsuario", "nome"), "Selecione o Usuário")%>
    

    Ou assim, caso deseje já selecionar algum valor em sua DDL:

    <%=Html.DropDownList("usuario", new SelectList((IEnumerable<Entidade>)ViewData["ListaDeUsuarios"], "codUsuario", "nome", u.codUsuario), "Selecione o Usuário")%><br/>
    
    

     

    Abaixo mais algumas referências:

    http://stackoverflow.com/questions/2308731/asp-net-mvc-dropdownlist-no-viewdata-item

    http://pt.efreedom.com/Question/1-810265/Integrando-o-jquery-com-AJAX-usando-MVC-para-ddl-html-dropdownlist

     

     

    Rafael Zaccanini

    rafael.zaccanini@gmail.com

    rafaelzaccanini.wordpress.com

    sexta-feira, 12 de novembro de 2010 17:50