Exemplo de validador customizado em ASP.NET

02:57 , 0 Comments

O primeiro passo é extender a classe "BaseValidator" que fica dentro de "System.Web.UI.WebControls".

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: