Bruno C. de Paula Controles de validação 1º Semestre 2010 > PUCPR > BSI 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. 3 Lembre-se: ASP.NET é baseado em dezenas de componentes visuais Tipos de componentes Validator Controls Controles de validação de dados; Validações automatizadas. 5 Validation: Chamado na validação dos dados fornecidos; Depois do Page_Load; Antes da chamada aos eventos (Clique etc); Pode impedir o clique. 6 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 ValidationSummary Ligação via ControlToValidate 7 Principais propriedades dos validadores ControlToValidate: 8 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. 9 Propriedade Text => “*” Propriedade ErrorMessage => “TxtBox1 é Obrigatório” Como saber se um PostBack é válido? 10 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 } Passo a passo para aplicação dos validadores 1) 11 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. 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 13 RequiredFieldValidator Garante que um campo seja obrigatório; 14 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). 15 CompareValidator Comparação entre controles; Checagem do tipo de dado; Comparação entre valores; 16 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. 17 RegularExpressionValidator Valida a partir de uma expressão regular contida na propriedade ValidationExpression. 18 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. 19 Uma expressão regular serve para casar um padrão com um texto 20 Utilidade Procurar texto dentro de outro; Separar um ou mais subtextos dentro de um texto; Validar texto em relação a um padrão. Principais metacaracteres 21 Metacarac. Nome Significado Casa Ñ Casa . Ponto Um caractere qualquer n.o casa com não, não, n-o n.o não casa com na, naao [...] Lista Qualquer um n[aã]o n[aã]o casa com não casa não, nao com no, nãão [.-.] Intervalo Intervalo entre caracts X[1-9]Y X[1-9]Y casa com não casa X1Y, X2Y com XAY [^...] Lista negada X[^a-z] X[^a-z] casa com não casa XA, XB com Xa Qualquer um exceto Principais metacaracteres Metacaract. Nome Significado Casa ? Opcional (0 ou 1) Anterior pode amar?! Casa ou não com ama! e ocorrer com amar! * Muitos (0 ou muitos) Anterior pode [ar]*a casa ocorrer com a, arara, diversas ra vezes + Muitos (1 ou muitos) Anterior pode 5+1 casa ocorrer com 51, 551 diversas vezes 22 Ñ Casa amar? não casa com amado 5+1 não casa com 1 Principais metacaracteres Metacaract. Nome Significado Casa {,} Muitos (Chaves) Anterior 5{3,5}1 casa aparece pelo com 5551, menos n e no 55551 máximo m vezes | Ou Um ou outro mão|pão casa com mão () Grupo Agrupa elementos (\.[0-9]){3} casa com .0.1.2 23 Ñ Casa 5{3,5}1 não casa com 551 Principais metacaracteres 24 Metacaract. Nome Significado Casa \d Dígito É um dígito (0 a 9) \d\d\d casa com 123 \D Não dígito Não é um dígito \D=\d+\+\d+ casa com A=1+1 \w Letra É uma letra \w+ casa com a, ab, abc 25 Importante! \ faz o escape dos caracteres; \. , \(, \), ... 26 Exemplos (\(0xx[0-9]{2}\) ?)?[0-9]{4}-[0-9]{4} 27 Casa com: (0xx41) 32443333, 3233-3333 Não casa com: (0 3244-3333 28 Exemplos ([01][0-9]|2[0-3]):[0-5][0-9] 29 Casa com: 22:30, 12:40, 01:59 Não casa com: 23:61, 25:59 CustomValidator Propriedades principais Validações 30 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. Exemplo de código do evento ServerValidate 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); } 31 Validação em JavaScript Propriedade ClientValidationFunction <script language="javascript" type="text/javascript"> var validarPar = function(src, args){ args.IsValid = (args.Value % 2 == 0); } </script> 32 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; } } 34 Referências Portal: http://www.asp.net/ Início: http://www.asp.net/get-started/ Aprenda: http://www.asp.net/learn/ 35 Referências Vídeo sobre validação (16 minutos): http://www.asp.net/learn/videos/video7419.aspx ASP.NET QuickStart: http://quickstarts.asp.net/QuickStartv20/as pnet/doc/ctrlref/validation/default.aspx 05/11/2015 Referências ASP.NET Validation in Depth: http://msdn.microsoft.com/enus/library/aa479045.aspx Artigo sobre os validadores. 36 37 Referências Portal sobre Expressões Regulares: http://aurelio.net/er/ Livro gratuito sobre Expressões Regulares: http://guia-er.sourceforge.net/ Livro sobre Expressões Regulares: http://www.novatec.com.br/livros/expreg2/ Uma excelente explicação para iniciantes: http://nerdson.com/blog/em-terra-demetacaractere-quem-tem-um-asterisco-e-rei/ Testador de regexp: http://regexpal.com/ 38 Referências CPF e CNPJ em C#: http://www.devmedia.com.br/articles/view comp.asp?comp=3950 http://buildbrasil.org/blogs/csharp/archive/ 2009/06/01/valida-231-227-o-de-cpf.aspx