quarta-feira, 24 de janeiro de 2007

Validação de form ficou muito mais fácil

Olá a todos. Neste post vou mostrar mais dois componentes muito valiosos do ASP.NET: RequiredFieldValidator e RegularExpressionValidator.

Estes componentes fazem validação de dados automaticamente no lado cliente e servidor (é possível escolher apenas um dois dois também). O RequiredFieldValidator testa se o campo está preenchido ou não; já o RegularExpressionValidator faz validação de acordo com uma string de validação que é uma RegularExpression (para saber mais sobre Regular Expression clique aqui).

Como eles funcionam? Primeiro associamos nosso componente de validação a um controle do WebForm através da propriedade ControlToValidate. Depois definimos a mensagem que deverá ser exibida para o usuário na propriedade ErrorMessage. No caso do RequiredFieldValidator está pronto; no caso do RegularExpressionValidator precisamos informar a expressão de validação na propriedade ValidationExpression. No exemplo abaixo vamos ver uma validação de um campo de e-mail com esses componentes.


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Entre com o e-mail para validação:
<asp:TextBox ID="TxtEmail" runat="server"></asp:TextBox>
<asp:Button ID="BtnOk" Text="Ok" runat="server" />
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
runat="server" ControlToValidate="TxtEmail"
Display="Dynamic" ErrorMessage="Este campo é obrigatório">
</asp:RequiredFieldValidator>

<asp:RegularExpressionValidator ID="RegexValidator"
ControlToValidate="TxtEmail" runat="server" Display="Dynamic"
ErrorMessage="E-mail inválido"
ValidationExpression="\b[a-zA-z0-9_.%-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z]{2,4}\b">
</asp:RegularExpressionValidator>

</div>
</form>
</body>
</html>



Vamos dar uma olhada à nossa Regular Expression de validação:
\b[a-zA-z0-9_.%-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z]{2,4}\b


\b indica para pesquisar antes e depois de qualquer seqüência alfanumérica
[a-zA-z0-9_.%-]+ - pesquisar um caractere entre a e z, A e Z, 0 a 9 e os _, ., % e - repetidas vezes (nome do usuário)
@ - o literal @
[a-zA-Z0-9_.-]+ - mesmo do anterior, apenas com menos símbolos (domínio)
\. - o literal "."
[a-zA-Z]{2,4} - somente letras, mas com limite entre 2 e 4 caracteres.

A validação de dados é feita no lado cliente e no servidor também. Caso o cliente não tenha script cliente ativado (ou funcionando) a validação ainda é feita no servidor. Se você for neurótico (como eu hehe) ainda pode fazer o teste de validação no lado servidor. Sempre que temos estes componentes de validação no WebForm a cada postback (envio de dados para o servidor) a propriedade IsValid do objeto Page é atualizada. Ou seja: se você quiser fazer validação no lado servidor é só checar a expressão Page.IsValid dentro de qualquer método dentro do WebForm.

Bem, ainda não posso dizer que isso é tudo, mas é um bom começo. Há muito mais componentes de validação no ASP.NET e vimos com estes que agora a tarefa de validação ficou muito mais fácil e divertida. até mais para todos e não deixem de acessar o site do nosso amigo Bruno Lichot.

Abraços.

Um comentário:

  1. Muito obrigada!
    Estava precisando entender como se monta uma RegularExpressionValidator.

    ResponderExcluir

 
BlogBlogs.Com.Br