none
Trabalhando com CHECK BOX no MVC. RRS feed

  • Pergunta

  • Boa tarde,

    Estou com um problema em uma pagina de pesquisa.

    Tenho uma página que permite pesquisa por Código, Nome, Modelo onde é selecionado o tipo de pesquisa que deseja realizar nos CHECKBOX's.

    @Html.Label("Digite o termo");
        @Html.TextBox("txtPesquisa")
        <br />
        
        @Html.CheckBox("cbCodigo")
        @Html.Label("Codigo");
                             <br />
        @Html.CheckBox("cbNome")
        @Html.Label("Nome");
                           <br />
        @Html.CheckBox("cbModelo")
        @Html.Label("Modelo");
                             <br />
        @Ajax.ActionLink("Filtrar", "Filtrar", new AjaxOptions { UpdateTargetId = "divTESTE", HttpMethod = "Post" })

    Agora preciso conseguir pegar quais são os valores que estão selecionados no Check BOX no controller.

       [HttpPost]
            public ActionResult Filtrar(FormCollection frmCollection)
            {
                
                Boolean teste = Convert.ToBoolean(frmCollection["cbNome"]);
    
                return View();
            }

    Estou fazendo desta forma e não estou conseguindo pegar os valores o que poderia ser feito de diferente?

    Muito obrigado.!

    quarta-feira, 20 de junho de 2012 16:40

Respostas

Todas as Respostas

  • Como assim não está conseguindo pegar os valores? Está dando erro?

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 20 de junho de 2012 16:58
  • Como assim não está conseguindo pegar os valores? Está dando erro?

    http://www.linkedin.com/pub/murilo-kunze/44/191/455


    no FormCollection o valor está chegando como null.

    quarta-feira, 20 de junho de 2012 17:01
  • Usando o ActionLink você não esta passando os parametros para o action

    @Ajax.ActionLink("Filtrar", "Filtrar", new AjaxOptions { UpdateTargetId = "divTESTE", HttpMethod = "Post" })

    use o Form para isso

    @using (Ajax.BeginForm("Form", new AjaxOptions() { UpdateTargetId = "FormContainer" , HttpMethod = "Post" }))


    Não esqueça de marcar o post como útil caso tenha te ajudado.


    • Editado Marco Souza quarta-feira, 20 de junho de 2012 17:12
    • Sugerido como Resposta Murilo Kunze quarta-feira, 20 de junho de 2012 17:18
    • Marcado como Resposta eeeeeeeeeeeeee5 quarta-feira, 20 de junho de 2012 17:57
    quarta-feira, 20 de junho de 2012 17:12
  • Usando o ActionLink você não esta passando os parametros para o action

    @Ajax.ActionLink("Filtrar", "Filtrar", new AjaxOptions { UpdateTargetId = "divTESTE", HttpMethod = "Post" })

    use o Form para isso

    @using (Ajax.BeginForm("Form", new AjaxOptions() { UpdateTargetId = "FormContainer" , HttpMethod = "Post" }))


    Não esqueça de marcar o post como útil caso tenha te ajudado.


    @using (Ajax.BeginForm("Filtrar", new AjaxOptions() { UpdateTargetId = "divTESTE", HttpMethod = "Post" }))
    {
        @Html.Label("Digite o termo");
        @Html.TextBox("txtPesquisa")
        <br />
        
        @Html.CheckBox("cbCodigo")
        @Html.Label("Codigo");
                             <br />
        @Html.CheckBox("cbNome")
        @Html.Label("Nome");
                           <br />
        @Html.CheckBox("cbModelo")
        @Html.Label("Modelo");
                             <br />
        
        <input type="submit" value="Filtrar" />
        @Html.ActionLink("Filtrar", "Filtrar")
        @Ajax.ActionLink("Filtrar", "Filtrar", new AjaxOptions { UpdateTargetId = "divTESTE"})
        
        <div id="divTESTE"></div>
    }

    Estou
    quarta-feira, 20 de junho de 2012 17:19
  • Usando o ActionLink você não esta passando os parametros para o action

    @Ajax.ActionLink("Filtrar", "Filtrar", new AjaxOptions { UpdateTargetId = "divTESTE", HttpMethod = "Post" })

    use o Form para isso

    @using (Ajax.BeginForm("Form", new AjaxOptions() { UpdateTargetId = "FormContainer" , HttpMethod = "Post" }))


    Não esqueça de marcar o post como útil caso tenha te ajudado.


    @using (Ajax.BeginForm("Filtrar", new AjaxOptions() { UpdateTargetId = "divTESTE", HttpMethod = "Post" }))
    {
        @Html.Label("Digite o termo");
        @Html.TextBox("txtPesquisa")
        <br />
        
        @Html.CheckBox("cbCodigo")
        @Html.Label("Codigo");
                             <br />
        @Html.CheckBox("cbNome")
        @Html.Label("Nome");
                           <br />
        @Html.CheckBox("cbModelo")
        @Html.Label("Modelo");
                             <br />
        
        <input type="submit" value="Filtrar" />
        @Html.ActionLink("Filtrar", "Filtrar")
        @Ajax.ActionLink("Filtrar", "Filtrar", new AjaxOptions { UpdateTargetId = "divTESTE"})
        
        <div id="divTESTE"></div>
    }

    Agora está entrando no Controller e trazendo o valor, porém, vem true e false, e o esperado era TRUE já que o Check está marcado na VIEW.




    quarta-feira, 20 de junho de 2012 17:21
  • Andreson, você tem que criar um <input type="submit" value="Enviar"/>

    Você não deve usar um link para filtrar, mas sim botões.

    Neste seu caso você terá multiplos botões de submit, então dá uma pesquisada sobre multiplos botões de submit em um form.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 20 de junho de 2012 17:24
  • Acho que os "botões" no exemplo dele são pra ver qual funciona :)

    Não esqueça de marcar o post como útil caso tenha te ajudado.

    quarta-feira, 20 de junho de 2012 17:30
  • Acho que os "botões" no exemplo dele são pra ver qual funciona :)

    Não esqueça de marcar o post como útil caso tenha te ajudado.

    Exatamente isto,

    Mas agora eu estou recebendo o valor true,false.

    Como faço para obter o status do checkBox? true or false?

    • Marcado como Resposta eeeeeeeeeeeeee5 quarta-feira, 20 de junho de 2012 17:57
    • Não Marcado como Resposta eeeeeeeeeeeeee5 quarta-feira, 20 de junho de 2012 17:57
    quarta-feira, 20 de junho de 2012 17:38
  • Ta ai a explicação: http://stackoverflow.com/questions/5936048/why-html-checkboxvisible-returns-true-false-in-asp-net-mvc-2

    Melhor você trabalhar com um model.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    • Marcado como Resposta eeeeeeeeeeeeee5 quarta-feira, 20 de junho de 2012 17:57
    quarta-feira, 20 de junho de 2012 17:52
  • Ta ai a explicação: http://stackoverflow.com/questions/5936048/why-html-checkboxvisible-returns-true-false-in-asp-net-mvc-2

    Melhor você trabalhar com um model.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    Entendi, achei isto meio complicado eim?

    Por que eu tenho meu Model -Produto- e tenho propriedades referentes a produto, agora terei mais 3 propriedades, BuscarCodigo, BuscarNome , BuscarModelo.

    É meio fora de contexto eu ter estas propriedades no MODEL né?

    quarta-feira, 20 de junho de 2012 17:57
  • Nao precisa colocar no model. Basta colocar os parametros na assinatura da sua Action:

    public ActionResult Filtrar(string buscaCodigo, string buscaNome, string buscaModelo){

    }

    quarta-feira, 20 de junho de 2012 20:54
    Moderador
  • Sim anderson, mas ai você criaria um ViewModel e colocaria o Produto sendo uma propriedade dele.

    Assim você não precisa ter actions com 10 parametros, o que no caso seria ridiculo.

    Dá uma pesquisada sobre MVVM.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quinta-feira, 21 de junho de 2012 11:31