endereco de e-mail ou uma url valida. Veja na imagem a baixo. The CustomValidator Control Apesar dos diversos controles de validacao que o asp.net fornece, pode acontecer de voce precisar de algum outro tipo de validacao. Para estes casos, voce deve utilizar o controle CustomValidator. A validacao deste controle e baseada no codigo em que o desenvolvedor cria. Voce tem a opcao de utilizar a validacao com javascript para rodar do lado do cliente, ou fazer via c# para rodar do lado do servidor.Custom Client-Side ValidationComo ja falado diversas vezes, a validacao do lado do cliente acontecera bem mais rapido para quem estiver utilizando sua pagina.O primeiro passo e escrever sua validacao do lado cliente, voce deve possui um metodo com a seguinte assinatura:function ClientFunctionName(source, arguments)Voce pode renomear o metodo conforme sua necessidade, porem os parametros de entrada nao podem ser modificados. Apos este metodo ser referenciado em seu controle, o framework de valiacao ira executar seu metodo automaticamente. Quando a funcao de validacao for executada, o parametro chamado source ira conter uma referencia ao controle de validacao que este sendo executado. Ja o parametro arguments tem a propriedade chamada Value que possue os dados a serem validados.Em seguida deve escrever seu codigo de validacao, e definir a propriedade arguments.IsValid para true ou false. E para finalizar basta definir a propriedade ClientFunctionName de seu controle, com o nome de sua funcao.No exemplo a seguir, existe o seguinte cenario: voce possui em sua pagina um controle TextBox, um botao para confirmar os dados, um ValidationSummary para exibir as mensagens de erro, e um RequiredFieldValidator para obrigar o usuario a informar uma nova senha no TextBox. Alem disso tem o CustomValidator que ira fazer a seguinte validacao nos dados do textbox, e um campo de senha que deve ter entre 6 e 14 caracteres, deve conter pelo menos 1 letra maiscula, uma minuscula, e pelo menos 1 numero. Veja como fica o codigo:<%@ Page Language="VB" AutoEventWireup="false" CodeFile="NewPassword.aspx.vb" Inherits="NewPassword" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/ xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head2" runat="server"> <title>Change Password</title> </head> <body style="font-family: Arial"> <form id="form1" runat="server"> <div> <table width="400"> <tr><td colspan="2" style="font-size: x-large">Change Password</td></tr> <tr> <td colspan="2"> <asp:ValidationSummary ID="ValidationSummary1" runat="server" /> </td> </tr> <tr> <td width="190" align="right" valign="middle">New password:</td> <td width="210" valign="middle"> <asp:TextBox ID="NewPasswordTextBox" runat="server" TextMode="Password"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidatorPassword" runat="server" ErrorMessage="Please enter a valid password" text="*" ToolTip="Please enter a valid password" ControlToValidate="NewPasswordTextBox"></asp:RequiredFieldValidator> <asp:CustomValidator ID="NewPasswordCustomValidator" runat="server" Text="*" ToolTip="Password must be between 6-14 characters and include 1 capital letter, 1 lowercase letter, and 1 number" ErrorMessage="Password must be between 6-14 characters and include 1 capital letter, 1 lowercase letter, and 1 number" ControlToValidate="NewPasswordTextBox" ClientValidationFunction="ValidatePassword"></asp:CustomValidator> </td> </tr> <tr> <td></td> <td><asp:Button ID="ButtonSubmit" runat="server" Text="Submit" /></td> </tr> </table> </div> </form> </body></html>O proximo passo e adicionar o codigo javascript com a funcao de validacao. A funcao chama ValidatePassword. Observe que a assinatura do metodo segue o padrao mostrado anteriormente, e que como e definida o arguments.IsValid.<script language="javascript" type="text/javascript"> function ValidatePassword(source, arguments) { var data = arguments.Value.split(''); //start by setting false arguments.IsValid = false; //check length if(data.length < 6 || data.length > 14) return; //check for uppercase, lowercase,