none
Pegar valor de DropDownList RRS feed

  • Pergunta

  • Boa tarde,

    Estou estudando o ASP.NET MVC e me deparei com um problema que não sei resolver, eu tenho um DropDownList, eu consegui preencher ele utilizando um List<String> e depois passando esse List para a View em um ViewBag, os valores do banco são nomes de países, o usuario precisa selecionar o país, mas no banco deve ir o ID do país na tabela de usuários.

    Eu vi que existe um tal SelectListItem, com ele eu consigo além do valor que vem do banco (no caso o país), posso adicionar um valor de referencia que pode até ser o próprio ID (do país no banco), ele tem um método que retorna esse valor de referencia com base na seleção do usuario, mas não consegui preencher o DropDownList com assim. Como posso fazer isso? Obrigado.

    Código do método que cria a ViewBag:

            public ActionResult FormCadastrarUsuario()
            {
                Usuario u = new Usuario();
                ViewBag.itens = u.BuscaPais();
                return View();
            }

    Código da View:

                @Html.Label("País") <br />
                @Html.DropDownListFor(model => model.Pais, new SelectList(ViewBag.itens))

    segunda-feira, 13 de janeiro de 2014 18:17

Respostas

Todas as Respostas

  • segunda-feira, 13 de janeiro de 2014 18:45
  • Rafael obrigado pela resposta, tenho que alterar alguma coisa na View?

    Conforme vi no post indicado, coloquei assim, agora o método no model retorna um List<Pais>, veja como ficou no controller:

            public ActionResult FormCadastrarUsuario()
            {
                Usuario u = new usuario();
                List<Pais> lista = u.BuscaPais();
                ViewBag.itens = new SelectList(lista, "ID", "Nome","0");
                return View();
            }
    Na View deixei do jeito que estava acima, no DropDownList ele exibe agora System.Web.Mvc.SelectListItem

    segunda-feira, 13 de janeiro de 2014 19:28
  • ao inves de utilizar o dropdownlistfor utilize assim:

    @Html.DropDownList("itens")


    --Rafael Albuquerque

    segunda-feira, 13 de janeiro de 2014 19:48
  • Rafael, agora independente do país que eu coloque o DropDownList sempre passa o valor 0, como não existe País 0 no banco ele da erro de FK.

    Se alguém mais puder me dar uma dica agradeço.

     
    segunda-feira, 13 de janeiro de 2014 20:09
  • crie uma validação se o dropdown estiver com o item 0 selecionado obrigue-o a selecionar.

    e da uma olhada debugando no retorno do seu metodo BuscaPais() e verifica se ele esta preenchendo sua lista certinho com o ID.


    --Rafael Albuquerque

    terça-feira, 14 de janeiro de 2014 01:14
  • Eu já verifiquei o retorno do metodo BuscPais(), está correto, os paises aparecem no DropDownList, o problema é que mesmo que eu selecione o país 5 da lista ele passa o valor 0.

    A questão da validação que você falou eu não intendi.

    terça-feira, 14 de janeiro de 2014 10:37
  • a questao da validação: ja que o campo é obrigatorio vc pode criar um script(javascript) ou mesmo server(backend) que não tente salvar o conteudo antes que o usuario selecione o pais.

    agora a questao do selectedValue como vc esta recuperando o valor do dropdown?


    --Rafael Albuquerque

    terça-feira, 14 de janeiro de 2014 12:41
  • Rafael, 

    no View eu coloquei como você falou

    @Html.DropDownList("itens")

    agora eu preciso recuperar o valor do DropDownList, é exatamente isso que eu quero fazer, onde eu coloco esse selectedValue? Na View?

    terça-feira, 14 de janeiro de 2014 13:15
  • // um exemplo de como recuperar os valores vindos da view

    [HttpPost] public ActionResult Salvar(int itens) { //na variavel "itens" ja vai vir com o selectedvalue }



    --Rafael Albuquerque

    • Marcado como Resposta Alan F. Almeida terça-feira, 14 de janeiro de 2014 16:12
    terça-feira, 14 de janeiro de 2014 13:36
  • Rafael,

    obrigado pela ajuda, mas não consegui fazer da forma que você me falou, estou utilizando um tutoria que encontrei pra fazer isso em JavScript mesmo. Segue o Link.

    http://wescley.net/2012/03/10/dropdownlist-utilizando-jquery-com-banco-de-dados/

    • Marcado como Resposta Alan F. Almeida terça-feira, 14 de janeiro de 2014 16:12
    terça-feira, 14 de janeiro de 2014 16:12