none
validar controles RRS feed

  • Pergunta

  • Pessoal,

    algumas pessoas defendem que a forma correta de validar controles é no servidor, outras dizem que é pelo javascript, visto que quase nao se utiliza browse sem o mesmo instalado, porem tem o risco da dasativação do recurso, dae fiquei na duvida, como ficaria no caso de validação em ambos os lados? ou seja, quem vai validar primeiro, nao vai dar conflito?

    qual a metodologia q vcs costumam usar?

    segunda-feira, 27 de fevereiro de 2012 13:47

Todas as Respostas

  • este é o caso Edson, e caso algum "espertinho" desabilite o javascript? os dados vao passar sem formatação para o servidor, gerando possiveis erros... entendeu? queria saber como garantir q os dados serao validados corretamente antes de seguir para o servidor

    muito obrgado

    segunda-feira, 27 de fevereiro de 2012 13:54
  •  Boa tarde!!

         É importante você validar os dados nos dois lados, pois se o usuário desativar o javascript, a validação do lado server irá impedir a gravação dos dados com problemas de validação, por exemplo.

         Se você usar os controles de validação do ASP.NET, eles fazem a validação do lado client e no lado server você pode checar se a validação foi efetuada com sucesso, exemplo:

       
            protected void btnGravarChamado_Click(object sender, EventArgs e)
            {
                if (Page.IsValid)
                {
                    //gravar os dados
                }
                else
                {
                    //erro na validação
                }
             } 

    Espero ter lhe ajudado!!

    Thiago Rogerio
    www.thiagorogerio.com.br
    thiagorogeriobr@hotmail.com

    • Sugerido como Resposta Renan Buzzi segunda-feira, 27 de fevereiro de 2012 18:19
    segunda-feira, 27 de fevereiro de 2012 15:46
  • legal, entao PageIsValida se refere a erros?
    segunda-feira, 27 de fevereiro de 2012 15:54
  •  Sim!!

       Dá uma olhada na documentação: http://msdn.microsoft.com/pt-br/library/system.web.ui.page.isvalid.aspx

    Só me esqueci que antes de você verificar a validação, você precisa executar Page.Validate() para validar, olha o exemplo da documentação:
    private void ValidateBtn_Click(Object Sender, EventArgs E)
    {
        Page.Validate();
        if (Page.IsValid == true)
            lblOutput.Text = "Page is Valid!";
        else
            lblOutput.Text = "Some required fields are empty.";
    }
    

    Espero ter lhe ajudado!!

    Thiago Rogerio
    www.thiagorogerio.com.br
    thiagorogeriobr@hotmail.com

    segunda-feira, 27 de fevereiro de 2012 16:09
  • Bom dia.

    Validar controles no servidor nao é uma boa prática, mas muitos programadores utilizam.

    Uma boa forma de validar controles(acredito que a melhor nos dias de hoje), seja a utilizacao de jquery, toda a validacao fica do lado do cliente, nao trazendo carga sobre o servidor.

    Segue alguns exemplos:

    http://blog.alexandremagno.net/2009/04/controle-completo-de-formularios-ajax-form-e-validate/

    http://www.macoratti.net/11/06/aspn_jq1.htm


    Consultoria .NET

    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
    Blog .Net Descomplicado

    Não validar os dados no servidor é loucura.

    É o mesmo que dizer que você não precisa trancar a porta do seu carro, é só encosta-la, porque o ladrão não vai tentar abri-la.


    http://samuelcazelli.blogspot.com/

    segunda-feira, 27 de fevereiro de 2012 16:20
  • Boa tarde.

    Analisando atentamente realmente o Samuel pode ter razão. Pode ser loucura como relatado.

    Voce só poderia ao invés de citar, apresentar também uma solução.

    Segue exemplo de validacao como apresentado, para auxiliar a dúvida do amigo:

    http://blog.alexandremagno.net/2009/04/controle-completo-de-formularios-ajax-form-e-validate/

    http://www.macoratti.net/11/06/aspn_jq1.htm


    Consultoria .NET

    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
    Blog .Net Descomplicado

    segunda-feira, 27 de fevereiro de 2012 16:41
  • <asp:ValidationSummary ID="vmFaleConosco" runat="server"  ShowMessageBox="true" ShowSummary="false"  ValidationGroup="Cadastro"  />
    <asp:Label runat="server" ID="lblMensagem" AssociatedControlID="txtMensagem" Text="Mensagem: "></asp:Label>
    <asp:RegularExpressionValidator ID="revMensagem" ValidationGroup="Cadastro" runat="server" ErrorMessage="O campo Mensagem atingiu o limite permitido." 
         ControlToValidate="txtMensagem" ValidationExpression="^[\s\S]{0,1024}$">*</asp:RegularExpressionValidator>
    <asp:RequiredFieldValidator ID="refMensagem" ValidationGroup="Cadastro" ControlToValidate="txtMensagem"  runat="server" ErrorMessage="O campo Mensagem é obrigatório.">*</asp:RequiredFieldValidator>
    <asp:TextBox runat="server" Width="450" Height="150" ID="txtMensagem" TextMode="MultiLine" ValidationGroup="Cadastro"></asp:TextBox>
    <asp:Button runat="server" ID="btnEnviar" Text="Enviar" ValidationGroup="Cadastro" onclick="btnEnviar_Click" />
    
    
            protected void btnEnviar_Click(object sender, EventArgs e)
            {
                this.Page.Validate("Cadastro");
                if (this.Page.IsValid)
                {
             
                }
            }

    Senhores boa tarde!

    Segue um exemplo de como utilizar os validator do asp .net . A vantagem em utiliza-los é que eles irão validar tanto no cliente como no servidor.


    segunda-feira, 27 de fevereiro de 2012 17:00
  • Bom dia,

    bem, entao estamos abandonando o uso do javascript, correto? ou ja estaria "embutido" nos controles asp.net?

    terça-feira, 28 de fevereiro de 2012 10:45
  • Os validadores do dotnet: RequiredFieldValidator, RegularExpressionValidator, RangeValidator e etc.. Já fazem a validação nos dois lados, Cliente E Servidor.

    O CustonValidator pode ser usado para fazer a validação tanto no lado do cliente quanto no lado do servidor, mas você deve especificar a função que irá validar.


    http://samuelcazelli.blogspot.com/

    terça-feira, 28 de fevereiro de 2012 10:52
  • certo, mas esta funçao para validar seria no code behind ou js?
    terça-feira, 28 de fevereiro de 2012 11:15
  • Usando o CustonValidator você pode fazer nos dois lados, Cliente e Servidor

    Para validação no servidor é só usar o evento ServerValidate.

    Para validação no cliente é só clocar a função javascript na propriedade ClientValidationFunction.

    Só lembrando que fazer a validação no lado do cliente é só uma forma de não obrigar o reload da página. Você ainda DEVE fazer a validação no servidor se quiser ter uma aplicação segura.


    http://samuelcazelli.blogspot.com/

    terça-feira, 28 de fevereiro de 2012 11:50
  • Usando o CustonValidator você pode fazer nos dois lados, Cliente e Servidor

    Para validação no servidor é só usar o evento ServerValidate.

    Para validação no cliente é só clocar a função javascript na propriedade ClientValidationFunction.

    Só lembrando que fazer a validação no lado do cliente é só uma forma de não obrigar o reload da página. Você ainda DEVE fazer a validação no servidor se quiser ter uma aplicação segura.


    http://samuelcazelli.blogspot.com/


    Bom dia

        Apenas completando a resposta do Samuel.

        Se utilizar RequiredFieldValidator, RangeValidator, CompareValidator e RegularExpressionValidator, a validação será feita automaticamente no lado cliente com javascript, e no lado servidor você precisa apenas checar se a validação está OK, conforme exemplo abaixo.
    private void ValidateBtn_Click(Object Sender, EventArgs E)
    {
        Page.Validate();
        if (Page.IsValid)
            lblOutput.Text = "Page is Valid!";
        else
            lblOutput.Text = "Some required fields are empty.";
    }

        Resumindo, o asp.net faz a validação no server também!! Você precisará escrever a validação cliente e servidor apenas se usar o CustomValidator, os demais não precisa!!

    Thiago Rogerio
    www.thiagorogerio.com.br
    thiagorogeriobr@hotmail.com

    terça-feira, 28 de fevereiro de 2012 12:04
  • Verdade Thiago, esse é um ponto importante que muita gente não conhece.

    http://samuelcazelli.blogspot.com/

    terça-feira, 28 de fevereiro de 2012 12:28
  • Usando o CustonValidator você pode fazer nos dois lados, Cliente e Servidor

    Para validação no servidor é só usar o evento ServerValidate.

    Para validação no cliente é só clocar a função javascript na propriedade ClientValidationFunction.

    Só lembrando que fazer a validação no lado do cliente é só uma forma de não obrigar o reload da página. Você ainda DEVE fazer a validação no servidor se quiser ter uma aplicação segura.


    http://samuelcazelli.blogspot.com/

    pessoal, entao em resumo basicamente seria isso? nao vai conflitar em nada?
    terça-feira, 28 de fevereiro de 2012 14:02