Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

38
Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula

Transcript of Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Page 1: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Controles de validação

1º Semestre 2010 > PUCPR > BSI

Bruno C. de PaulaBruno C. de Paula

Page 2: 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.

Page 3: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Lembre-se: ASP.NET é baseado em dezenas de componentes visuais

3

Page 4: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Tipos de componentesValidator Controls

Controles de validação de dados;

Validações automatizadas.

Page 5: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Validation:Chamado na

validação dos dados fornecidos;

Depois do Page_Load;

Antes da chamada aos eventos (Clique etc);

Pode impedir o clique.

5

Page 6: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

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

6

Page 7: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

7

Ligação viaControlToValidate

Page 8: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Principais propriedades dos validadoresControlToValidate: 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

Page 9: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

9

PropriedadeText => “*”

PropriedadeErrorMessage=> “TxtBox1 éObrigatório”

Page 10: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Como saber se um PostBack é válido?

Page.IsValidNã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

Page 11: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Passo a passo para aplicação dos validadores1) 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

Page 12: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Passo a passo para aplicação dos validadores2) 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

Page 13: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

RequiredFieldValidator

Garante que um campo seja obrigatório;

13

Page 14: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

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

Page 15: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

CompareValidator

Comparação entre controles;Checagem do tipo de dado;Comparação entre valores;

15

Page 16: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

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

Page 17: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

RegularExpressionValidator

Valida a partir de uma expressão regular contida na propriedade ValidationExpression.

17

Page 18: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

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

Page 19: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

19

Uma expressão regular

serve para casar um

padrão comum texto

Page 20: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

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

Page 21: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Principais metacaracteres21

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 casa com não, nao

n[aã]o não casa com no, nãão

[.-.] Intervalo Intervalo 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

Page 22: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Principais metacaracteres22

Metacaract. Nome Significado Casa Ñ 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, 551

5+1 não casa com 1

Page 23: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Principais metacaracteres23

Metacaract. Nome Significado Casa Ñ Casa

{,} Muitos(Chaves)

Anterior aparece pelo menos n e no máximo m vezes

5{3,5}1 casa com 5551, 55551

5{3,5}1 não casa com 551

| Ou Um ou outro

mão|pão casa com mão

() Grupo Agrupa elementos

(\.[0-9]){3} casa com .0.1.2

Page 24: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Principais metacaracteres24

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

Page 25: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Importante!

\ faz o escape dos caracteres;\. , \(, \), ...

25

Page 26: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Exemplos

(\(0xx[0-9]{2}\) ?)?[0-9]{4}-[0-9]{4}

26

Page 27: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

27

Casa com: (0xx41) 3244-

3333,3233-3333

Não casa com:(0 3244-3333

Page 28: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Exemplos

([01][0-9]|2[0-3]):[0-5][0-9]

28

Page 29: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

29

Casa com: 22:30, 12:40,

01:59

Não casa com:23:61, 25:59

Page 30: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

CustomValidator Propriedades principaisValidaçõ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

Page 31: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Exemplo de código do eventoServerValidate

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);

}

Page 32: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Validação em JavaScriptPropriedade ClientValidationFunction

32

<script language="javascript" type="text/javascript">

var validarPar = function(src, args){      args.IsValid = (args.Value % 2 == 0);}</script>

Page 33: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

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; } }

Page 34: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

ReferênciasPortal:

http://www.asp.net/ Início:

http://www.asp.net/get-started/Aprenda:

http://www.asp.net/learn/

34

Page 35: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

ReferênciasVídeo sobre validação (16 minutos):

http://www.asp.net/learn/videos/video-7419.aspx

ASP.NET QuickStart:http://quickstarts.asp.net/

QuickStartv20/aspnet/doc/ctrlref/validation/default.aspx

35

Page 36: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Referências

ASP.NET Validation in Depth:http://msdn.microsoft.com/en-us/

library/aa479045.aspxArtigo sobre os validadores.

3611/04/23

Page 37: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

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-de-

metacaractere-quem-tem-um-asterisco-e-rei/ Testador de regexp: http://regexpal.com/

37

Page 38: Controles de validação 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.

Referências

CPF e CNPJ em C#:http://www.devmedia.com.br/

articles/viewcomp.asp?comp=3950http://buildbrasil.org/blogs/csharp/

archive/2009/06/01/valida-231-227-o-de-cpf.aspx

38