Aprendendo Sobre controles de validação
Este artigo é apenas para acabar com algumas dúvidas que vejo nos fóruns existentes na web.
Neste artigo vou mostrar alguns exemplos e aplicações para todos os controles de validação, com exceção do RequiredFieldValidator o qual é o mais simples e fácil de utilizar.
Vamos então ao trabalho...
Começamos com o CompareValidator.
CompareValidator_Simples
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Controle de Validação</title>
</head>
<body>
<form id="Form1" runat="server">
<table border="0" bgcolor="#b0c4de">
<tr valign="top">
<td colspan="4"><h4>
Comparando dois valores:</h4></td>
</tr>
<tr valign="top">
<td><asp:TextBox id="txt1" runat="server" /></td>
<td> = </td>
<td><asp:TextBox id="txt2" runat="server" /></td>
<td style="width: 63px">
<asp:Button ID="btnValidar" Text="Validar" runat="server" /></td>
</tr>
</table>
<br />
<asp:CompareValidator
id="CompareValidator1"
Display="dynamic"
ControlToValidate="txt1"
ControlToCompare="txt2"
ForeColor="red"
BackColor="yellow"
Type="Double"
EnableClientScript="false"
Text="Valores não são iguais"
runat="server" />
</form>
</body>
</html>
Execute sua aplicação e faça alguns testes com esse exemplo!!!
CompareValidator_Usando um List
Vamos agora dar ao usuário a opção de escolha entre comparar valores "iguais" ou "diferentes" através do evento OnSelectedIndexChanged do ListBox.
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Controle de Validação</title>
</head>
<body>
<form id="Form1" runat="server">
<table border="0" bgcolor="#b0c4de">
<tr valign="top">
<td colspan="4"><h4>
Comparando 2 valores</h4></td>
</tr>
<tr valign="top">
<td><asp:TextBox id="txt1" runat="server" /></td>
<td>
<asp:ListBox id="list" rows="2" OnSelectedIndexChanged="check_operador" runat="server">
<asp:ListItem value="Equal" selected>=</asp:ListItem>
<asp:ListItem value="NotEqual"><></asp:ListItem>
</asp:ListBox>
</td>
<td><asp:TextBox id="txt2" runat="server" /></td>
<td><asp:Button ID="btnValidar" Text="Validar" runat="server" /></td>
</tr>
</table>
<br />
<asp:CompareValidator
id="CompareValidator1"
Display="dynamic"
ControlToValidate="txt1"
ControlToCompare="txt2"
ForeColor="red"
BackColor="yellow"
Type="String"
EnableClientScript="false"
Text="Dados Incorretos!"
runat="server" />
</form>
</body>
</html>
Em seguida selecione o ListBox e na janela Properties clique no botão Events e selecione o evento OnSelectedIndexChanged. Digite o nome para o procedimento (check_operador) e com um duplo clique sobre este nome edite o seguinte código:
protected void check_operador(object sender, EventArgs e)
{
CompareValidator1.Operator = (ValidationCompareOperator)list.SelectedIndex;
CompareValidator1.Validate();
}
Execute sua aplicação e veja o resultado.
CustomValidator
Vamos agora usar um controle customizado.
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Validação de Dados</title>
</head>
<body>
<form id="Form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Nome de Usuário: " />
<asp:TextBox id="txt1" runat="server" />
<asp:Button ID="Button1" Text="Submit" runat="server"/>
<br />
<asp:Label id="mess" runat="server"/>
<br />
<asp:CustomValidator ID="CustomValidator1"
ControlToValidate="txt1"
OnServerValidate="validaUsuario"
Text="O Nome de usuário deve ter entre 8 e 16 caracteres!"
runat="server"/>
</form>
</body>
</html>
Abra o arquivo de código ".cs" e digite o seguinte código:
protected void validaUsuario(object source, ServerValidateEventArgs args)
{
if (args.Value.Length < 8 || args.Value.Length > 16)
{
args.IsValid=false;
}
else
{
args.IsValid=true;
}
}
Neste exemplo verificamos o número de caracteres fornecido pelo usuário. Rode sua aplicação e entre com um valor no texbox.
RangeValidator Simples
Vamos forçar nosso usuário a digitar uma data válida.
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="Form1" runat="server">
Digite uma data valida entre 01/01/2005 e 31/12/2005:
<br />
<asp:TextBox id="tbox1" runat="server" />
<br /><br />
<asp:Button ID="Button1" Text="Submit" runat="server" />
<br /><br />
<asp:RangeValidator ID="RangeValidator1"
ControlToValidate="tbox1"
MinimumValue="01/01/2005"
MaximumValue="31/12/2005"
Type="Date"
EnableClientScript="false"
Text="A data informada deve estar entre 01/01/2005 e 31/01/2005"
runat="server" />
</form>
</body>
</html>
Vamos agora usar o RangeValidator associado a um evento.
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="Form1" runat="server">
Digite um número entre 1 e 100:
<asp:TextBox id="tbox1" runat="server" />
<br /><br />
<asp:Button ID="Button1" Text="Submit" OnClick="enviar" runat="server" />
<br /><br />
<asp:Label id="lbl1" runat="server" />
<br />
<asp:RangeValidator ID="RangeValidator1"
ControlToValidate="tbox1"
MinimumValue="1"
MaximumValue="100"
Type="Integer"
EnableClientScript="false"
Text="O Valor informado deve estar entre 1 e 100!"
runat="server" />
</form>
</body>
</html>
No arquivo de código digite o procedimento que segue:
protected void enviar(object sender, EventArgs e)
{
if (Page.IsValid)
{ lbl1.Text = "Página validada com sucesso!";}
else
{lbl1.Text = "Página não é valida";}
}
Agora vamos usar o RegularExpressionValidator
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Validação de Dados</title>
</head>
<body>
<form id="Form1" runat="server">
Digite um CEP valido:
<asp:TextBox id="txtbox1" runat="server" />
<br /><br />
<asp:Button ID="Button1" text="Submit" OnClick="enviar" runat="server" />
<br /><br />
<asp:Label id="lbl" runat="server" />
<br />
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
ControlToValidate="txtbox1"
ValidationExpression="\d{8}"
EnableClientScript="false"
ErrorMessage="O CEP deve conter 9 caracteres!"
runat="server" />
</form>
</body>
</html>
E no aruqivo de código insira o procedimento:
protected void enviar(object sender, EventArgs e)
{
if (Page.IsValid)
{
lbl.Text = "CEP validado com sucesso!";
}
else
{
lbl.Text = "Este CEP não é valido";
}
}
O Valor "\d{8}" da propriedade ValidationExpression indica:
\ - Caracter de scape
d – Valor do tipo Double
{8} – Com 8 digitos
Vale salientar que como podemos observar, em alguns controles de validação ainda podemos usar Page.IsValid para executar determinadas tarefas. A título de exemplo apenas usei um Label para mostrar uma mensagem...
Bem pessoal, vou ficando por aqui com mais esta dica que pode ser útil a todos (ou não..rsrsrsrsrsr), mas o que vale mesmo é a intensão de ajudar!!!
Um grande abraço e até breve!!!