NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosASP.NET › Capítulo 08 : 02
Quer receber novidades e e-books gratuitos?
« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
ASP.NET - CURSO COMPLETO
Autor: Júlio Battisti

Lição 059 - Capítulo 08 - Validation Controls: Definição e Propriedades Gerais

Para facilitar a tarefa de fazer a validação dos dados digitados em um formulário, é que foram criado os controles de validação – Validation Controls.

Por que estes controles não são chamados de HTMLServer Validation Controls?

No Capítulo 7 nos vimos que para cada tag HTML utilizada para a criação de formulários, existe um HTML Server Control correspondente. A vantagem dos HTML Server Controls é que os mesmos são compilados como objetos em uma página ASP.NET. Sendo objeto temos acesso aos métodos e propriedades do controle. Já os controles de validação não possuem correspondentes no HTML. São na verdade controles completamente novos e não uma melhoria em relação a controles já existentes.

Os controles de validação possuem as mesmas características que os chamados Web Server Controls (que serão estudados no Capítulo 9). Estes controles iniciam com a palavra asp, conforme exemplo a seguir, onde temos uma pequena amostra da sintaxe do controle RequiredFieldValidator:

<asp:RequiredFieldValidator
Atributo1
Atributo2
...
Atributon>
</asp:RequiredFieldValidator>

Nota: Estudaremos o controle RequiredFieldValidator em detalhes ainda neste capítulo.

Outra diferença é quanto a localização das classes bases, ou seja, das classes das quais são derivados os controles. Os HTMLServer controls  são derivados de classes do namespace System.Web.UI.HtmlControls, já os Web Server Controls, dos quais fazem parte os controles de validação, são derivados de classes contidas no namespace System.Web.UI.WebControls.

Como é que utilizamos os controles de validação?

Na criação do formulário, devemos associar um controle de validação com cada campo onde os dados devam ser validados. Por exemplo, se existe um campo Nome o qual é de preenchimento obrigatório, devemos associar um campo RequiredFieldValidator com o campo nome que é obrigatório. Quando o usuário envia a página para processamento, cada controle de validação irá checar o valor digitado no controle associado para verificar se está tudo OK, ou seja, para verificar se o formulário passou no teste de validação. Basta que um único campo não atenda as regras de validação definidas, para que o formulário não passe no teste de validação. Neste caso podemos exibir uma mensagem de erro descrevendo o(s) controle(s) que não passou(aram) na validação, em um controle do tipo ValidationSummary.

Por serem controles de servidor, mais especificamente, Web Server Controls, os controles de validação possuem uma série de funcionalidades embutidas que os tornam extremamente interessantes para a criação de aplicações Web. Dizemos que foi embutida “inteligência” nestes controles. Estas funcionalidades, nas versões anteriores do ASP, tinham que ser codificadas manualmente pelo programador. Ao embutir funcionalidades nos próprios controles estamos reduzindo a quantidade de código que precisa ser escrita. Esta frase já foi repetida n vezes neste livro e não me canso de repetir: “Com o Framework .NET o programador precisa se preocupar menos com funções básicas, as quais passaram para o controle do Framework .NET; precisando apenas cuidar da lógica da aplicação”.

Uma das funcionalidades dos controles de validação é que eles são capazes de, automaticamente, detectar qual o navegador ou dispositivo que o cliente está utilizando, e se for o Internet Explorer 5 ou superior, será gerado código de validação no próprio cliente, no momento da criação da página. Em outras palavras. Ao carregar uma página, no IE 5 ou superior, página esta que contém controles de validação, será gerado, automaticamente, código para fazer a validação no próprio cliente, evitando que a página seja enviada para o servidor se algum controle não tiver passado no teste de validação. Nesta situação a página somente será enviada para processamento quando todos os controles tiverem passado no teste de validação. Para criar esta mesma funcionalidade nas versões anteriores do ASP, tínhamos que escrever uma boa quantia de código. O código de validação gerado automaticamente, no cliente, é criado utilizando-se da linguagem DHTML – Dynamic HTML. Para maiores informações sobre DHTML consulte o seguinte endereço: www.wdvl.com.

Importante= Mesmo que o código para validação no cliente tenha sido gerado, quando a página é enviada para o servidor, a validação é feita pelos Validation Controls, para garantir que resultados incorretos sejam inseridos no banco de dados. Pode acontecer de a página  ter sido modificada no caminho entre o navegador do cliente e o servidor IIS. Neste caso os dados que foram digitados e passaram na validação foram modificados por um hacker e não são os mesmos que chegaram no servidor. Por isso a validação no servidor funciona como uma proteção extra. Claro que isso não dispensa o uso de outras técnicas de segurança como por exemplo a criptografia e Certificados Digitais. Falaremos um pouco mais sobre Segurança, no último capítulo deste livro.

Se quisermos é possível desabilitar a validação no cliente. Para isso temos uma propriedade chamada EnableClientScript, da classe BaseValidator, da qual todos os controles de validação são derivados. A propriedade EnableClientScript é do tipo Boleana. – True ou False. Estudaremos a classe BaseValidator logo em seguida. Ao desabilitarmos a validação no cliente (definindo EnableClientScript = False), podemos criar mensagens personalizadas de erro, ao invés de utilizar as mensagens pré-definidas e o controle ValidationSummary.

A Mãe de todos? Ou seria o Pai de todos?

Todos os controles de validação são derivados de uma classe base chamada BaseValidator. Esta classe faz parte do namespace System.Web.UI.WebControls. Por serem baseados na classe BaseValidator, os controles de validação herdam as propriedades e métodos desta classe.

Principais propriedades da classe BaseValidator

Neste tópico vamos apresentar as principais propriedades da classe BaseValidator. Para uma descrição completa, de todo os métodos e propriedades da classe BaseValidator, abra a documentação do Framework .NET (Iniciar -> Programas -> Microsoft .NET Framework SDK -> Documentation) e , uma vez dentro da documentação, siga o seguinte caminho:

.NET Framework SDK
   .NET Framework Reference
      .NET Framework Class Library
         System.Web.UI.WebControls
            BaseValidator Class

Vamos ao estudo dos principais métodos:

  • ControlToValidate: Define ou retorna o nome do controle que será associado ao controle de validação.
  • EnableClientScript: Habilita/desabilita a geração automática de código de validação no cliente, quando o navegador suporta tal funcionalidade. Esta propriedade é do tipo Boleana, podendo assumir os valores True ou False. Pode ser utilizada para retornar ou definir o valor desta propriedade.
  • Enabled: Propriedade do tipo Boleana (True ou False) que pode ser utilizada para definir ou retornar um valor que indica se a validação está habilitada (True) ou desabilitada (False), para o controle.
  • ErrorMessage: É utilizada para definir o texto da mensagem de erro associada ao controle de validação. Também pode ser utilizada para obter o texto da mensagem de erro associada.
  • ForeColor:  Utilizada para definir ou retornar a cor da mensagem de erro que será exibida quando a validação falhar.
  • ID: Define um identificador associado ao controle, identificador este que é utilizado no código para acessar as propriedades e métodos do controle.
  • IsValid: Propriedade do tipo Boleana (True ou False), que indica se a validação ocorreu com sucesso ou não. Por exemplo, se o controle de validação é do tipo que exige uma entrada obrigatória (RequiredFieldValidator) e o usuário não digita nada no campo associado ao controle de validação, o teste de validação irá falhar e esta propriedade conterá o valor False, indicando que o controle não passou no teste de validação.

Principais métodos da classe BaseValidator

Vamos descrever alguns métodos da classe BaseValidator e apresentar um exemplo prático. O objetivo deste primeiro exemplo é ver os controles de validação em funcionamento. Não iremos explicar o código do exemplo neste momento. A medida que formos avançando no capítulo e explicando os diversos controles de validação disponíveis, você poderá voltar a este exemplo e, facilmente entender o código do mesmo.

Principais métodos da classe BaseValidator:

  • Validate: É responsável por fazer a validação do controle associado com o controle de validação e atualizar a propriedade IsValid para True se a validação ocorre com sucesso ou para False, caso contrário.
  • RegisterValidatorCommonScript: Pode ser utilizado para registrar código na página, para que ocorra a validação no cliente.

Um exemplo, só para começar

Vamos apresentar um pequeno exemplo, para que possamos ver os controles de validação em funcionamento. Conforme explicado anteriormente, não nos deteremos na explicação do código do exemplo, neste momento.

No exemplo proposto, temos um formulário com um campo para digitação, onde o usuário deve digitar um valor entre 1 e 10. Se o usuário não digitar nada, ao clicar no botão Enviar será exibida a seguinte mensagem: “Você não digitou nenhum número!!”. Quando o usuário digita um número entre 1 e 10, a propriedade IsValid torna-se verdadeira e o evento Click do botão Enviar será executado. Neste evento é gerado um número aleatório entre 1 e 10. Se o número digitado pelo usuário, for igual ao número gerado aleatoriamente, é exibida a seguinte mensagem: “Parabéns, você acertou!!!”, caso contrário será exibida a seguinte mensagem: "Sinto muito, você errou!!!".

Nota: O exemplo apresentado é baseado em um exemplo da documentação do Framework .NET.

Na Listagem 8.1 temos o código para o exemplo proposto.

Listagem 8.1 – O primeiro exemplo com controles de validação – chap8ex1.aspx.

<html>
<head>
   <script  language="C#" runat="server">
      void  Button_Click(Object sender, EventArgs e) 
      {
         Random  rand_number = new Random();
          Compare1.ValueToCompare = rand_number.Next(1, 10).ToString();
          Compare1.Validate();
         if  (Page.IsValid) 
         {
             lblOutput.Text = "Parabéns, você acertou!!!";
         }
         else 
         {
            lblOutput.Text = "Sinto muito, você  errou!!!";
         }
          lblOutput.Text += "<br><br>" + "O número  correto era: " + Compare1.ValueToCompare;
      }
    </script>
</head>
<body>
   <form  runat=server>
      <h3>Exemplo  de validação.</h3>
      <h5>Digite  um número entre 1 e 10:</h5>
      <asp:RequiredFieldValidator  id="Require1" 
           ControlToValidate="TextBox1"
            Type="Integer" 
            ErrorMessage="Você não digitou nenhum número!!"
           Text="*"
           runat="server"/>
      <asp:TextBox  id="TextBox1" 
            runat="server"/>
       <asp:CompareValidator id="Compare1" 
            ControlToValidate="TextBox1"
            ValueToCompare="0"
            EnableClientScript="False"  
           Type="Integer" 
           ErrorMessage="Número  Incorreto!!"
            Text="*"
            runat="server"/>
      <br>
      <br>
      <asp:Button  id="Button1"
            Text="Enviar"
            OnClick="Button_Click"
            runat="server"/>
      <br>
      <br>       
      <asp:Label  id="lblOutput" 
            Font-Name="verdana" 
            Font-Size="10pt" 
            runat="server"/>
      <br>
      <br>
       <asp:ValidationSummary
            id="Summary1"
            runat="server"/>
   </form>
</body>
</html>

Digite o código da Listagem 8.1 e salve o mesmo em um arquivo chamado chap8ex1.aspx, na pasta chap8, dentro da pasta wwwroot, conforme descrito no item: “Check List para acompanhar os exemplos deste livro”, no Capítulo 6.

Para acessar esta página utilize o seguinte endereço:

http://localhost/chap8/chap8ex1.aspx

Dê um clique no botão Enviar, sem digitar nenhum valor no campo para digitação. Você obterá o resultado indicado na Figura 8.1.

Curso Completo de ASP.NET - Júlio Battisti
Figura 8.1 Controles de validação – chap8ex1.aspx.

Agora digite um número entre 1 e 10 e clique no botão Enviar. Se você acertar o número gerado pelo código do evento Button_Click, será exibida a mensagem: "Parabéns, você acertou!!!", caso contrário será exibida a mensagem indicada na Figura 8.2.

Curso Completo de ASP.NET - Júlio Battisti
Figura 8.2 O usuário não adivinhou o número gerado aleatoriamente.

Prometi que não iria comentar o código deste primeiro exemplo, mas apenas um comentário rápido, em relação a geração de números aleatórios. Para gerar um número aleatoriamente, entre 1 e 10, declaramos e inicializamos uma variável (talvez seria melhor dizer um objeto) do tipo Random:

Random rand_number = new Random();

A variável rand_number é baseada na classe Random, do namespace System. Em seguida utilizamos o método Next da classe Random, para gerar um número aleatório entre 1 e 10.

Agora vamos estudar, em detalhes, os diversos controles de validação do ASP.NET.

« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2024 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI