none
Selecionar múltiplos usuários e enviar para o controller RRS feed

  • 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
    quarta-feira, 17 de abril de 2013 20:51

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
    quinta-feira, 18 de abril de 2013 02:28
  • 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
    quinta-feira, 18 de abril de 2013 03:20

Todas as Respostas

  • Vc tem o numero do celular ja no controle, por eles faz um linq na tabela e pega o nome dos usuários! 

    Paulo Marcelo Dalbosco

    quinta-feira, 18 de abril de 2013 02:17
  • 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
    quinta-feira, 18 de abril de 2013 02:28
  • 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
    quinta-feira, 18 de abril de 2013 03:20
  • teria como eu pegar na view  apenas os que estão com o checkbox selecionado?
    quinta-feira, 18 de abril de 2013 18:51
  • 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.

    sábado, 20 de abril de 2013 03:03