Usuário com melhor resposta
Selecionar múltiplos usuários e enviar para o controller

Pergunta
-
Eu quero usar o Check box para selecinar múltiplos usuários e enviar para o meu controller a principio eu estava enviando somente o numero do celular dos usuarios para o controller mas surgiu a necessidade de enviar mais do que o numero, eu preciso do numero e do nome do usuário, meu controller e minha view estão assim :
teria alguma forma de enviar o numero e o nome por exemplo?
@using (Html.BeginForm("Enviar", "Home")) { <table id="myTable"> <thead> <tr> <th><input type="checkbox"/></th> <th>@Html.DisplayName("Nome") </th> <th>@Html.DisplayName("CANCELADO") </th> <th>@Html.DisplayName("Numero") </th> </tr> </thead> <tbody> @foreach (var item in Model) { <tr> <td><input type="checkbox" name="CELULAR" value="@item.CELULAR"/></td> <td name="Nome">@Html.DisplayFor(modelItem => item.NOME)</td> <td name="Email">@Html.DisplayFor(modelItem => item.CANCELADO)</td> <td name="Celular" value="@item.CELULAR">@Html.DisplayFor(modelItem => item.CELULAR)</td> </tr> } </tbody> </table> <input type="submit" value="Selecionar"/> }
o controller que recebe:
[HttpPost] public ActionResult Enviar(String[] celular) { ..... return View(); }
- Editado Diogo Dil quarta-feira, 17 de abril de 2013 21:05
Respostas
-
Diogo,
Boa noite!
Você precisa definir um prefixo ao atributo name do html utilizando o index de cada elemento, troque o foreach por um for ou crie uma variável de contador, mude este trecho do seu código:
@for (int count = 0; count < Model.Count(); count ++ ) { <tr> <td><input type="checkbox" name="CELULAR" value="@modelItem => Model[count].CELULAR"/></td> <td name="Nome">@Html.DisplayFor(modelItem => Model[count].FirstName)</td> <td name="Email">@Html.DisplayFor(modelItem => Model[count].CANCELADO)</td> <td name="Celular" value="@modelItem => Model[count].CELULAR">@Html.DisplayFor(modelItem => Model[count].CELULAR)</td> </tr> }
Att,
Leandro
- Sugerido como Resposta Leandro Tozetto quinta-feira, 18 de abril de 2013 02:28
- Marcado como Resposta Diogo Dil quinta-feira, 18 de abril de 2013 17:59
- Não Marcado como Resposta Diogo Dil quinta-feira, 18 de abril de 2013 18:50
- Marcado como Resposta welington jrModerator domingo, 18 de março de 2018 17:49
-
Complementando, no controller o método deve ser modificado para:
[HttpPost] public ActionResult Enviar(IEnumerable<Usuario> model) { ..... return View(); }
Considerando, obviamente, que na view o Model seja do tipo Usuario.
Leonardo Lima da Silva
- Marcado como Resposta Diogo Dil quinta-feira, 18 de abril de 2013 17:59
- Não Marcado como Resposta Diogo Dil quinta-feira, 18 de abril de 2013 18:50
- Marcado como Resposta welington jrModerator domingo, 18 de março de 2018 17:49
Todas as Respostas
-
-
Diogo,
Boa noite!
Você precisa definir um prefixo ao atributo name do html utilizando o index de cada elemento, troque o foreach por um for ou crie uma variável de contador, mude este trecho do seu código:
@for (int count = 0; count < Model.Count(); count ++ ) { <tr> <td><input type="checkbox" name="CELULAR" value="@modelItem => Model[count].CELULAR"/></td> <td name="Nome">@Html.DisplayFor(modelItem => Model[count].FirstName)</td> <td name="Email">@Html.DisplayFor(modelItem => Model[count].CANCELADO)</td> <td name="Celular" value="@modelItem => Model[count].CELULAR">@Html.DisplayFor(modelItem => Model[count].CELULAR)</td> </tr> }
Att,
Leandro
- Sugerido como Resposta Leandro Tozetto quinta-feira, 18 de abril de 2013 02:28
- Marcado como Resposta Diogo Dil quinta-feira, 18 de abril de 2013 17:59
- Não Marcado como Resposta Diogo Dil quinta-feira, 18 de abril de 2013 18:50
- Marcado como Resposta welington jrModerator domingo, 18 de março de 2018 17:49
-
Complementando, no controller o método deve ser modificado para:
[HttpPost] public ActionResult Enviar(IEnumerable<Usuario> model) { ..... return View(); }
Considerando, obviamente, que na view o Model seja do tipo Usuario.
Leonardo Lima da Silva
- Marcado como Resposta Diogo Dil quinta-feira, 18 de abril de 2013 17:59
- Não Marcado como Resposta Diogo Dil quinta-feira, 18 de abril de 2013 18:50
- Marcado como Resposta welington jrModerator domingo, 18 de março de 2018 17:49
-
-
Diogo,
Você fez a alteração no seu controller conforme o Leonardo disse?
Caso você tenha feito isso, você pode criar mais uma coluna no seu objeto para representar o checkbox, mas como não vai fazer sentido ter essa propriedade no seu objeto, crie um DTO (Data transfer Object) da sua classe usuário para a exibição dos dados na view. Para realizar o cast entre os objetos utilize o AutoMapper.
Att,
Leandro
Se foi útil, marque como útil ou como resposta.