Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula
Resumo da aula O objetivo de hoje é conhecer mais alguns dos componentes disponibilizados pelo ASP.NET. Vamos focar nos componentes de validação, que permitem validações automatizadas de componentes.
Lembre-se: ASP.NET é baseado em dezenas de componentes visuais 3
Tipos de componentes Validator Controls Controles de validação de dados; Validações automatizadas.
Validation: Chamado na validação dos dados fornecidos; Depois do Page_Load; Antes da chamada aos eventos (Clique etc); Pode impedir o clique. 5
Controles de Validação Transformam os controles já existentes em controles sensíveis à validação; A validação é armazenada no controle de validação; O resultado da validação também pode ser exibido em um sumário de validação - componente ValidationSummaryValidationSummary 6
7 Ligação via ControlToValidate
Principais propriedades dos validadores ControlToValidate: ID do controle que deve ser validado; EnableClientScript: Habilita validação via JavaScript; Text: texto exibido no validador quando ocorre o erro; ErrorMessage: Texto exibido no sumário de validação; SetFocusOnError: Foca no controle quando inválido após a submissão. 8
9 Propriedade Text => * Propriedade ErrorMessage => TxtBox1 é Obrigatório
Como saber se um PostBack é válido? Page.IsValid Não pode ser usado no PageLoad; Usado quando não é possível validação em JavaScript; if(Page.IsValid) { // Código para página válida } 10
Passo a passo para aplicação dos validadores 1) Tente usar os validadores: RequiredFieldValidator: campo obrigatório; RangeValidator: Intervalo (numérico, string, data); CompareValidator: Validação do tipo de dado, comparação entre dois componentes, comporação entre componente e valor. 11
Passo a passo para aplicação dos validadores 2) Se os validadores anteriores não resolverem o problema: RegularExpressionValidator: uso de expressões regulares. 3) Se os validadores anteriores não resolverem o problema: CustomValidator. 4) Cheque no evento (Click, ServerValidate, etc), a variável Page.IsValid. 12
RequiredFieldValidator Garante que um campo seja obrigatório; 13
RangeValidator Verifica um intervalo de valores; Propriedades Principais: MinimumValue: Valor mínimo; MaximumValue: Valor mínimo; Type: Tipo de dado a ser validado: String; Inteiro; Double; Date; Money (Dinheiro). 14
CompareValidator Comparação entre controles; Checagem do tipo de dado; Comparação entre valores; 15
CompareValidator - Propriedades ControlToValidate; ControlToCompare: ID do controle a ser comparado; Operator: operação de operação: igual, diferente, maior que, maior ou igual, menor que, menor ou igual, checagem do tipo de dados (DataTypeCheck). Type: tipo dos valores sendo comparados; ValueToCompare: Valor a ser comparado. 16
RegularExpressionValidator Valida a partir de uma expressão regular contida na propriedade ValidationExpression. 17
Expressão Regular (regexp) Método formal para especificar um padrão de texto; Composição de símbolos no formato de regra; O maior desafio está em aprender a ler e escrever uma regexp. 18
19 Uma expressão regular serve para casar um padrão com um texto
Utilidade Procurar texto dentro de outro; Separar um ou mais subtextos dentro de um texto; Validar texto em relação a um padrão. 20
Principais metacaracteres 21 Metacarac.NomeSignificadoCasaÑ Casa.PontoUm caractere qualquer n.o casa com não, não, n-o n.o não casa com na, naao [...]ListaQualquer um n[aã]o casa com não, nao n[aã]o não casa com no, nãão [.-.]IntervaloIntervalo entre caracts X[1-9]Y casa com X1Y, X2Y X[1-9]Y não casa com XAY [^...]Lista negada Qualquer um exceto X[^a-z] casa com XA, XB X[^a-z] não casa com Xa
Principais metacaracteres 22 Metacaract.NomeSignificadoCasaÑ Casa ?Opcional (0 ou 1) Anterior pode ou não ocorrer amar?! Casa com ama! e com amar! amar? não casa com amado *Muitos (0 ou muitos) Anterior pode ocorrer diversas vezes [ar]*a casa com a, arara, ra +Muitos (1 ou muitos) Anterior pode ocorrer diversas vezes 5+1 casa com 51, não casa com 1
Principais metacaracteres 23 Metacaract.NomeSignificadoCasaÑ Casa {,}Muitos (Chaves) Anterior aparece pelo menos n e no máximo m vezes 5{3,5}1 casa com 5551, {3,5}1 não casa com 551 |OuUm ou outromão|pão casa com mão ()GrupoAgrupa elementos (\.[0-9]){3} casa com.0.1.2
Principais metacaracteres 24 Metacaract.NomeSignificadoCasa \dDígitoÉ um dígito (0 a 9) \d\d\d casa com 123 \DNão dígitoNão é um dígito\D=\d+\+\d+ casa com A = \wLetraÉ uma letra\w+ casa com a, ab, abc
Importante! \ faz o escape dos caracteres; \., \(, \),... 25
Exemplos (\(0xx[0-9]{2}\) ?)?[0-9]{4}-[0-9]{4} 26
27 Casa com: (0xx41) , Não casa com: (
Exemplos ([01][0-9]|2[0-3]):[0-5][0-9] 28
29 Casa com: 22:30, 12:40, 01:59 Não casa com: 23:61, 25:59
CustomValidator CustomValidator Propriedades principais Validações personalizadas; Propriedade ControlToValidate: Controle a ser validado; Propriedade ClientValidationFunction: Função em JavaScript a ser chamada caso necessário; Evento ServerValidate: Função que verifica se o campo é válido. 30
Exemplo de código do evento ServerValidate 31 protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) { // args.Value obtém o valor do campo int num = Convert.ToInt32(args.Value); // args.IsValid = true indica que o dado está válido // args.IsValid = false indica que o dado está inválido args.IsValid = (num % 2 == 0); }
Validação em JavaScript Propriedade ClientValidationFunction 32 var validarPar = function(src, args){ args.IsValid = (args.Value % 2 == 0); }
Validação no Servidor agora exige a verificação do Page.IsValid 33 protected void Button1_Click(object sender, EventArgs e) { if (Page.IsValid) { Label1.Text = TextBox1.Text; }
Referências Portal: Início: Aprenda: 34
Referências Vídeo sobre validação (16 minutos): aspx aspx ASP.NET QuickStart: pnet/doc/ctrlref/validation/default.aspx pnet/doc/ctrlref/validation/default.aspx 35
Referências ASP.NET Validation in Depth: us/library/aa aspx us/library/aa aspx Artigo sobre os validadores /1/2014
Referências Portal sobre Expressões Regulares: Livro gratuito sobre Expressões Regulares: Livro sobre Expressões Regulares: Uma excelente explicação para iniciantes: metacaractere-quem-tem-um-asterisco-e-rei/ metacaractere-quem-tem-um-asterisco-e-rei/ Testador de regexp: 37
Referências CPF e CNPJ em C#: omp.asp?comp= omp.asp?comp= /06/01/valida o-de-cpf.aspx /06/01/valida o-de-cpf.aspx 38