Exemplo de validador customizado em ASP.NET
O primeiro passo é extender a classe "BaseValidator" que fica dentro de "System.Web.UI.WebControls". /p>
Uma vez feito isto sobscreva o método "EvaluateIsValid", retornando "true" ou "false" para a validação.
Para recuperar o campo uma opção é criar uma propriedade, neste exemplo foi criado "Controle".
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI.WebControls; namespace Validadores { public class ValidadorCPF : BaseValidator { private TextBox _controle; private TextBox Controle { get { if (_controle == null) _controle = (TextBox)FindControl(ControlToValidate); return _controle; } } protected override bool EvaluateIsValid() { return Valida(Controle.Text); } ////// Função retirada de: /// -http://social.msdn.microsoft.com/Forums/pt/vscsharppt/thread/1dbe81e6-c063-4ae5-ae1d-5643fb4b0e62 /// /// ///public bool Valida(string cpf) { int[] multiplicador1 = new int[9] { 10, 9, 8, 7, 6, 5, 4, 3, 2 }; int[] multiplicador2 = new int[10] { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 }; string tempCpf; string digito; int soma; int resto; cpf = cpf.Trim(); cpf = cpf.Replace(".", "").Replace("-", ""); if (cpf.Length != 11) return false; tempCpf = cpf.Substring(0, 9); soma = 0; for (int i = 0; i < 9; i++) soma += int.Parse(tempCpf[i].ToString()) * multiplicador1[i]; resto = soma % 11; if (resto < 2) resto = 0; else resto = 11 - resto; digito = resto.ToString(); tempCpf = tempCpf + digito; soma = 0; for (int i = 0; i < 10; i++) soma += int.Parse(tempCpf[i].ToString()) * multiplicador2[i]; resto = soma % 11; if (resto < 2) resto = 0; else resto = 11 - resto; digito = digito + resto.ToString(); return cpf.EndsWith(digito); } } }
Para adicionar o validador na página primeiro crie uma tag Register atribuindo os valores de "Namespace" e "Assembly". Feito isto é só utilizar normalmente como qualquer outro validador.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register TagPrefix="v" Namespace="Validadores" Assembly="App_Code" %>
Download exemplo
0 comentários: