none
Razor renderizando um Hidden indevidamente RRS feed

  • Pergunta

  • Olá bom dia.

    Com 2 campos boolean e hoje percebi que um Hidden está sendo renderizado também.

    O código:

    @Html.CheckBoxFor(model => model.BaixarTitulo)

    Gerou o HTML:

    <input id="BaixarTitulo" name="BaixarTitulo" type="checkbox" value="true" /><input name="BaixarTitulo" type="hidden" value="false" />
    

    Mesmo que provavelmente seja normal isso está dando problema quando envio para o host de produção a aplicação.  Tenho um JQuery que altera umas coisas quando este checkbox é alterado.

    Código:

    <script type="text/javascript">
        $(function () {
    
            @if(Model.BaixarTitulo)
            {
                @Html.Raw("$(\"#parcelas\").hide()");
            }
            else
            {
                @Html.Raw("disableElements($('#dadospagamento').children());");            
            }        
            
            $("#BaixarTitulo").change(function () {
                
                var Marcado = $(this).is(':checked');
    
                if (Marcado)
                {
                    enableElements($('#dadospagamento').children());
                    $("#parcelas").hide();
                }
                else
                {
                    disableElements($('#dadospagamento').children());
                    $("#parcelas").show();
                }
            });
        });
    </script>

    Este enable e disable, como o show e hide de uma div não estão funcionando de jeito nenhum no host oficial.  Local está perfeito.

    Alguém já passou por isso?

     
    quarta-feira, 3 de julho de 2013 11:13

Respostas

  • Esse hidden é normal. O Asp.Net MVC trata esse CheckBoxFor de uma forma diferente, além de criar o input checkbox ele também cria um hidden que armazena o valor do checkbox.

    Quanto ao seu codigo javascript, realmente alguma coisa deve estar errada, e isto provavelmente é erro de javascript. Para descobrir faça o seguinte, abra seu site no host de produção, com o google chrome. Clique com direito na página -> Inspecionar Elemento. Após isso abra a aba console. Recarregue a página e tente dar show e hide novamente. Irá aparecer na tela detalhes sobre o erro de js, o que vai ser suficiente para te dar um norte. Caso ainda tenha problemas vai postando os resultados aí.

    Valeu!


    Ao infinito e além!

    quarta-feira, 3 de julho de 2013 15:44

Todas as Respostas

  • Esse hidden é normal. O Asp.Net MVC trata esse CheckBoxFor de uma forma diferente, além de criar o input checkbox ele também cria um hidden que armazena o valor do checkbox.

    Quanto ao seu codigo javascript, realmente alguma coisa deve estar errada, e isto provavelmente é erro de javascript. Para descobrir faça o seguinte, abra seu site no host de produção, com o google chrome. Clique com direito na página -> Inspecionar Elemento. Após isso abra a aba console. Recarregue a página e tente dar show e hide novamente. Irá aparecer na tela detalhes sobre o erro de js, o que vai ser suficiente para te dar um norte. Caso ainda tenha problemas vai postando os resultados aí.

    Valeu!


    Ao infinito e além!

    quarta-feira, 3 de julho de 2013 15:44
  • Romulo,

    Quando usamos do Html Helper CheckBox, por padrão ele renderiza um input do tipo hidden armazenando o valor atual, pois quando efetuamos um post da pagina para o servidor, por padrão só é enviado para o servidor apenas os checkboxs que estão habilitado.

    Faça oque o Fabio comentou, valide em algum navegador pelo console de desenvolvimento se o script apresenta algum erro, pois olhando seu jQuery, na vi nada de anormal.

    Vitor Mendes | http://www.vitormendes.com.br/

    "Ajuda teu semelhante a levantar a sua carga, porém, não a carregá-la." (Pitágoras)

    quarta-feira, 3 de julho de 2013 17:57
  • Olá amigos.

    Bom aconteceu algo que já percebi antes.  O JS estava correto mesmo.  Eu fui no FTP, via FileZilla, puxei, coloquei só uns alerts, e upei novamente.  Daí ele começou a funcionar e está certinho agora.

    Tem horas que parece que o servidor guarda um cache, sei lá.  Neste caso eu testei aqui e no trabalho e ficou errado igualmente, foi algo de servidor.

    Houve casos que ajustei algo no repositor, controller ou model.  Recompilo e envio a pasta Bin para o servidor.  Ele simplesmente não pega o que eu upei (mas não deu erro na hora no ftp).  Daí depois de reenviar ele passa a funcionar.

    Há alguma forma melhor de upar os arquivos direto via FTP?  Eu as vezes faço um Publish no VS 2012 direto para o FTP mas demora uns 20 minutos.  Via FTP, só substituindo o que mudou, demora uns 50 segundos (projeto iniciando ainda).

    Alguma dica?

    Obrigado!

    quarta-feira, 3 de julho de 2013 23:50