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
.png)
0 comentários: