Usuário com melhor resposta
Listbox do MVC não estão aparecendo no formcollection

Pergunta
-
olá.
Tenho seguinte cenário: duas listbox onde a primeira contém todas turmas cadastradas no banco de dados. Na segunda é vazia e deverá conter apenas as turmas que forem relacionadas ao curso.
<tr> <td> @Html.ListBox("LstTurmas", new MultiSelectList((IEnumerable<SelectListItem>)ViewData["Turmas"], "Value", "Text"), new { id = "LstTurmas", multiple = "multiple", style = "width:200px; height:200px" }) </td> <td align="center" style="vertical-align: middle"> <div> <input type="button" id="btnSelecionar" value=">>" onclick="javascript:SelecionarTurmas();" /> </div> <div> <input type="button" id="btnRemover" value="<<" onclick="javascript:RemoverTurmas();" /> </div> </td> <td> @Html.ListBoxFor(model => model.CursoTurmas, new MultiSelectList((IEnumerable<SelectListItem>)ViewData["CursoTurmas"], "Value", "Text"), new { id = "LstTurmaSelecionada", multiple = "multiple", style = "width:200px; height:200px" }) </td> </tr>
Tenho dois botões que movimentam os itens entre estas duas listas com o seguinte javascript:
function SelecionarTurmas() { var lstTurmas = document.getElementById("LstTurmas"); var lstTurmasSel = document.getElementById("LstTurmaSelecionada"); var i; for (i = 0; i < lstTurmas.options.length; i++) { if (lstTurmas.options[i].selected == true) { var op = document.createElement("OPTION"); op.text = lstTurmas.options[i].text; op.value = lstTurmas.options[i].value; lstTurmasSel.options.add(op); lstTurmas.options.remove(i); i--; } } } function RemoverTurmas() { var lstTurmas = document.getElementById("LstTurmas"); var lstTurmasSel = document.getElementById("LstTurmaSelecionada"); var i; for (i = 0; i < lstTurmasSel.options.length; i++) { if (lstTurmasSel.options[i].selected == true) { var op = document.createElement("OPTION"); op.text = lstTurmasSel.options[i].text; op.value = lstTurmasSel.options[i].value; lstTurmas.options.add(op); lstTurmasSel.options.remove(i); i--; } }
Quando dou um post no meu formulário para enviar ao controller e fazer a gravação dos dados, os listbox (ambos) não estão aparecendo no formcollection do método.O que estou fazendo de errado?
Ps.: Estou usando mvc3 com razor
Sérgio Rezende Júnior Msn: Sérginho_jr@hotmail.com Email: sergio.rezende@mcom.com.br
Respostas
-
Meus caros.
Consegui solucionar esta questão colocando um campo hiden e criando um array com cada item que é selecionado. Desta forma este campo hiden aparece no momento do meu post e eu trabalho o array que recebo no controller.
Faço a inserção de todos os itens dentro de um foreach.
Agradeço a todos pela ajuda.
Obs.: Implementei esta solução neste final de semana.
Sérgio Rezende Júnior Msn: Sérginho_jr@hotmail.com Email: sergio.rezende@mcom.com.br- Marcado como Resposta Sérgio Rezende Júnior segunda-feira, 9 de janeiro de 2012 12:17
Todas as Respostas
-
-
Fernando boa tarde.
Também não é esta opção, pois tentei adicionar a tag name nas opções de html e não funcionou.
Quando trabalho apenas com a listbox a primeira informação a ser passada como parâmetro é o nome do componente na renderização em html.
Sérgio Rezende Júnior Msn: Sérginho_jr@hotmail.com Email: sergio.rezende@mcom.com.br -
Sim fernado você esta correto quanto ao name.
- Editado Alexis Moura quarta-feira, 28 de dezembro de 2011 16:18
-
-
Olá sérgio voce poderia postar o código do seu controller para facilitar a ajuda?
Atenciosamente:
Edney Batista da Silva - Desenvolvedor .Net, C#, Asp.Net, Java, SQL
CONTATOS:
Hotmail: edney_contato@hotmail.com
Skype: edney.dyn
-
Meus caros.
Consegui solucionar esta questão colocando um campo hiden e criando um array com cada item que é selecionado. Desta forma este campo hiden aparece no momento do meu post e eu trabalho o array que recebo no controller.
Faço a inserção de todos os itens dentro de um foreach.
Agradeço a todos pela ajuda.
Obs.: Implementei esta solução neste final de semana.
Sérgio Rezende Júnior Msn: Sérginho_jr@hotmail.com Email: sergio.rezende@mcom.com.br- Marcado como Resposta Sérgio Rezende Júnior segunda-feira, 9 de janeiro de 2012 12:17
-