none
Resposta CheckBox MVC RRS feed

  • Pergunta

  • Pessoal, boa noite

    Sou novo no MVC, e tive que um relatório onde eu passo um lista de objetos

    e faço o seguinte codigo

    Para preencher uma table

    if (Model.ModelObj.ResultadoBusca != null) { var Lista = new List<string>(); if (Model.ModelObj.TipoFiltro == "Promotor") { Lista = (from tb in Model.ModelObj.ResultadoBusca group tb.Promotor.Trim() by new {promotor = tb.Promotor} into g select g.Key.promotor).ToList(); } else if (Model.ModelObj.TipoFiltro == "Pagamento") { Lista = (from tb in Model.ModelObj.ResultadoBusca group tb.TipoPagamento by new {tb.TipoPagamento} into g select g.Key.TipoPagamento).ToList(); } else if (Model.ModelObj.TipoFiltro == "Banco") { Lista = (from tb in Model.ModelObj.ResultadoBusca group tb.Banco by new {tb.Banco} into g select g.Key.Banco).ToList(); } foreach (var pro in Lista) { var dados = new List<DadosRelatorio>(); switch (Model.ModelObj.TipoFiltro) { case "Promotor": dados = (from tb in Model.ModelObj.ResultadoBusca where tb.Promotor.Trim() == pro.Trim() select tb).ToList(); string doc = (from tb in Model.ModelObj.ResultadoBusca where tb.Promotor.Trim() == pro.Trim() select tb.Documento).FirstOrDefault(); <h3> @pro (@doc) </h3> break; case "Pagamento": <h3>@pro</h3> dados = (from tb in Model.ModelObj.ResultadoBusca where tb.TipoPagamento.Trim() == pro.Trim() select tb).ToList(); break; case "Banco": <h3>@pro</h3> dados = (from tb in Model.ModelObj.ResultadoBusca where tb.Banco.Trim() == pro.Trim() select tb).ToList(); break; } <table style="display: block" class="report"> <thead> <tr> <th></th> <th>Id Contrato </th> </tr> </thead> <tbody> @foreach (var item in dados) { <tr> <td>@Html.CheckBoxFor(m => item.Selecao) </td> <td> @item.IdContrato </td> < </tr> } </tbody> </table> }

    Só que eu preciso resgatar os valores dos checkBox


    quinta-feira, 11 de julho de 2013 23:10

Respostas

  • Pessoal, o problema eram as seguintes questões.

    Eu estava utilizando uma classe gererica como tipo da View

    Ou seja

    ClassGeneric<Contratos>

    E quando você trabalha com desta forma, você tem que colocar um ModelBinder próprio

    Mais informações sobre isso:http://stackoverflow.com/questions/1487005/asp-net-mvc-model-binder-for-generic-type

    Utilizando o foreach ele da um bind no value do campo

    então troquei e ficou assim

    @for (int i = 0; i < Model.ResultadoBusca.Count; i++)
                {
                    <tr>
                        <td>
                            @Html.Label(Model.ResultadoBusca[i].IdContrato.ToString())
                            @Html.HiddenFor(m => m.ResultadoBusca[i].IdContrato)
                        </td>
                        <td>
                            @Html.CheckBoxFor(m => m.ResultadoBusca[i].Selecao)
                        </td>
                    </tr>
      
                }

    • Marcado como Resposta Diego de Brito sexta-feira, 12 de julho de 2013 18:25
    sexta-feira, 12 de julho de 2013 18:25

Todas as Respostas

  • Use checkbox simples ao invés de checkboxfor:

    @Html.CheckBox("checkContrato", new { value = item.IdContrato });

    • Sugerido como Resposta Paulo M Dalbosco sexta-feira, 12 de julho de 2013 11:17
    sexta-feira, 12 de julho de 2013 01:58
    Moderador
  • Meu problema é que não esta trazendo a lista que eu populei com o Foreach

    Segue um código mais simples ( que inclusive coloquei da maneira que você sugeriu)

    <table>
            <thead>
                <tr>
                    <th>idContratato</th>
                    <th>Selecionar</th>
                </tr>
            </thead>
            <tbody>
               
                @foreach (var item in Model.ModelObj.ResultadoBusca)
                {
                    <tr>
                        <td>
                            @item.IdContrato
                        </td>
                        <td>
                            @Html.CheckBox("checkContrato", new { value = item.IdContrato });
                            <input name="regioes" value="@item.IdContrato" type="checkbox" />
                        </td>
                    </tr>
                }
            </tbody>
        </table>

    sexta-feira, 12 de julho de 2013 15:58
  • Pessoal, o problema eram as seguintes questões.

    Eu estava utilizando uma classe gererica como tipo da View

    Ou seja

    ClassGeneric<Contratos>

    E quando você trabalha com desta forma, você tem que colocar um ModelBinder próprio

    Mais informações sobre isso:http://stackoverflow.com/questions/1487005/asp-net-mvc-model-binder-for-generic-type

    Utilizando o foreach ele da um bind no value do campo

    então troquei e ficou assim

    @for (int i = 0; i < Model.ResultadoBusca.Count; i++)
                {
                    <tr>
                        <td>
                            @Html.Label(Model.ResultadoBusca[i].IdContrato.ToString())
                            @Html.HiddenFor(m => m.ResultadoBusca[i].IdContrato)
                        </td>
                        <td>
                            @Html.CheckBoxFor(m => m.ResultadoBusca[i].Selecao)
                        </td>
                    </tr>
      
                }

    • Marcado como Resposta Diego de Brito sexta-feira, 12 de julho de 2013 18:25
    sexta-feira, 12 de julho de 2013 18:25