Control personalizado validar tarjetas de crédito asp.net

Thursday, May 13, 2010 6:33 AM

Si bien es cierto que asp.net contiene muchos controles que nos facilitan la vida, en muchas ocasiones requerimos funcionalidades adicionales. Una de las opciones es recurrir a la creación de controles personalizados.

Este será el Primero de varios post que dedicare a mostrar como crear algunos controles personalizados utilizando elementos sumamente sencillos y faciles de entender. Para ello utilizaremos unicamente los regularexpressionvalidator y unas cuantas expresiones regulares.

Para este ejemplo extenderemos la funcionalidad de un textbox para que valide números de tarjetas de crédito. Nuestro textbox deberá verificar que existan 16 números, en grupos de 4, separados por un -

Entonces, creamos un nuevo proyecto de tipo control de servidor asp.net

Primeramente importamos los espacios de nombres

Imports System.ComponentModel
Imports System.Web
Imports System.Web.UI.WebControls
Imports System.Web.UI

 

Segundo creamos nuestra clase

Public Class TextboxCreditCardNumber

end class

Ahora,  le decimos a nuestra clase que vamos a heredar de textbox

**Public Class TextboxCreditCardNumber
**

          Inherits TextBox

end class

Una vez que tenemos esto, nuestra base de programación esta lista, asi que vamos a codificar nuestra nueva funcionalidad

Declaramos nuestra variables y una propiedad pública que contendrá el mensaje de error que debe ser devuelto al usuario, esta será publica para que pueda ser personalizada.

 **Private req As New RegularExpressionValidator
    Private mstrmensaje As String = "Número de Tarjeta Invalido"

    Public Property MensajeError() As String
        Get
            Return mstrmensaje
        End Get
        Set(ByVal value As String)
            mstrmensaje = value
        End Set
    End Property**
 

Ahora definimos el metodo OnInit de nuestro control, en el cual asignaremos las propiedad e inicializaremos nuestras funciones

   **Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
        req.ControlToValidate = MyBase.ID
        req.ErrorMessage = mstrmensaje
        req.Display = ValidatorDisplay.Dynamic
        req.ValidationExpression = "^(\d{4}-){3}\d{4}$|^(\d{4} ){3}\d{4}$|^\d{16}$" 'Nuestra expresión regular encargada de verificar el numero de tarjeta ingresado
        Controls.Add(New LiteralControl(" "))
        Controls.Add(req)

        MyBase.OnInit(e)

    End Sub**
 

Y por último, definimos el evento render (que es el encarado de dibujar nuestro control)

**Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)

        MyBase.Render(writer)
        req.RenderControl(writer)

    End Sub**

Lo unico que nos queda ahora es compilar nuestra clase y añadir nuestro nuevo control al ToolBox de Controles para que pueda ser utilizado.

This article is part of the GWB Archives. Original Author: Jason Ulloa

New on Geeks with Blogs

  • We Won The One Award I Actually Care About

    Full Scale made the Inc. 5000 for the fifth year straight, the 12th listing across my three companies. Here is why the one award you cannot buy is worth stopping for.

  • Your Customers Build the Features Now

    I let a tool I liked sit dead for a year rather than build the features I wanted. An MCP server meant I never had to, and your customers can do the same to your product.

  • Get the Size of a Directory in Linux the Easy Way

    du -sh for the quick answer, ncdu for the cleanup, df for the disk itself: every command for checking directory size in Linux, plus why du and df never agree.

  • Vim Search and Replace: The Ultimate Guide

    One :%s command replaces every match in a file before a find dialog would even open. The Vim substitute patterns worth the muscle memory: flags, ranges, capture groups, and multi-file edits.