You are on page 1of 5

Controles de Validacin:

nuevo de 2.0
Grupos de Validacin - Podemos asignar un nombre de grupo a un conjunto
de validadores para asegurarnos que se produce la validacin slo para
controles del grupo especificado. sto nos permite tener mltiples grupos de
control, que se validan de forma separada, en la misma pgina.
Fijar el Foco en el Error - Mediante la nueva caracterstica de API de Foco de
ASP.NET, los validadores se pueden configurar para fijar el foco en su control
asociado que queremos validar, cuando se produce un error de validacin. El
primer control del formulario que tiene un error de validacin recibir el foco
cuando se enva el formulario.
Valores Invariantes de Regiones - Cuando hacemos conversiones en una
propiedad no fuertemente tipada de un validador de comparacin
(CompareValidator.ValueToCompare, RangeValidator.MaximumValue,
RangeValidatos.MinimumValue) el validador usar un formato neutral de regin
(Fecha:YYYY/MM/DD, Double & Moneda:formato de regin US) para hacer la
conversin cuando CultureInvariantValues vale "true".
Validacin de Texto Vaco - La propiedad ValidateEmptyText fija una cuestin
clave de CustomValidator. En ASP.NET 1.0 la validacin personalizada no
funcionaba si el ValidationText estaba vaco. Podemos fijar esta propiedad a
"true" para que se produzca la validacin personalizada para valores vacos de
entrada.
Este apartado discute estas y otras caractersticas de validacin en ASP.NET 2.0.

El Framework de Formularios Web incluye un conjunto de controles de servidor de validacin que
proporcionan una forma sencilla pero poderosa de comprobar los formularios de entrada en busca
de errores y, si es necesario, mostrar mensajes al usuario. Los controles de validacin se aaden
a una pgina de Formularios Web de la misma forma que el resto de controles. Hay controles para
tipos especficos de validacin, por ejemplo comprobacin de rango o coincidencia con patrones,
adems de un RequiredFieldValidator que asegura que un usuario no olvide rellenar un campo.
Podemos "ligar" ms de un control de validacin a un control de entrada. Por ejemplo, podramos
especificar tanto que un campo es obligatorio y que debe contener un rango especfico de
valores.

Los controles de validacin trabajan un limitado subconjunto de controles de servidor HTML y
Web. Para cada control, una propiedad especfica contiene el valor que se validar. La siguiente
tabla muestra los controles de entrada que pueden ser validados.
Control Propiedad de Validacin
HtmlInputText Value
HtmlTextArea Value
HtmlSelect Value
HtmlInputFile Value
TextBox Text
ListBox SelectedItem.Value
DropDownList SelectedItem.Value
RadioButtonList SelectedItem.Value
FileUpload FileName
Tipos de Controles de Validacin
El formulario de validacin ms sencillo es un campo obligatorio. Si el usuario introduce un valor
en el campo, es vlido. Si todos los campos de la pgina son vlidos, la pgina es vlida


Tambin hay controles de validacin para tipos especficos de validacin, cmo control de rango
o coincidencia con un patrn. La siguiente tabla muestra los controles de validacin.
Nombre del Control Descripcin
RequiredFieldValidator Asegura que el usuario no se deja un campo
CompareValidator Compara los datos que introduce el usuario con una constante o
el valor de una propiedad de otro control mediante un operador
de comparacin (menor que, igual que, mayor que, etc.).
RangeValidator Comprueba que la entrada del usuario se encuentra entre un
lmite superior y otro inferior. Podemos comprobar los rangos
con parejas de nmeros, caracteres alfabticos o fechas. Los
lmites se pueden expresar como constantes.
RegularExpressionValidator Comprueba que la entrada sigua un patrn definido como una
expresin regula. Este tipo de validacin nos permite comprobar
secuencias predecibles de caracteres, tales como nmeros de
seguridad social, direccin de e-amil, nmeros de telfono,
cdigos postales, etc.
CustomValidator Comprueba la entrada de usuario mediante lgica de validacin
que hemos programado nosotros. Este tipo de validacin nos
permite comprobar valores obtenidos en tiempo de validacin.
ValidationSummary Muestra los errores de validacin en un formulario resumen para
todos los validadores de la pgina.
Validacin del Lado Cliente
Los controles de validacin siempre realizan operaciones de validacin comprobando en el cdigo
del servidor. Sin embargo, si el usuario trabajo con un navegador que soporta DHTML, los
controles de validacin pueden realizar la validacin mediante scripts de cliente. Con la
validacin del lado del cliente, cualquier error se detecta en el cliente cuando se enva el
formulario al servidor. Si cualquiera de los validadores encuentra un error, el envo del
formulario al servidor se cancela y se muestra la propiedad Text del validador. sto permite al
usuario corregir la entrada antes de enviar el formulario al servidor. Los valores de los campos se
revalidan cuando el campo que contena el error pierde el foco, proporcionando as una
experiencia rica e interactiva de validacin al usuario.

Observad que el Framework de Pginas de Formularios Web siempre realiza la validacin en el
servidor, incluso cuando ya se ha hecho en el cliente. sto nos ayuda a impedir que los usuarios
puedan saltarse la validacin hacindose pasar por otro usuario o una transaccin prviamente
aprobada.

La validacin del lado del cliente est permitida por defecto. Si el cliente lo permite, la
validacin de nivel superior se realizar de forma automtica. Para deshabilitar la validacin del
lado del cliente, estableceremos la propiedad ClientTarget de la pgina a "Downlevel" ("Uplevel"
fuerza la validacin del lado cliente). De forma alternativa, podemos establecer la propiedad
EnableClientScript de un control de validacin a "false" para deshabilitar la validacin del lado
cliente para dicho control.



Mostrando Errores de Validacin
Cuando se procesa una entrada de usuario (por ejemplo, al enviar un formulario), el Framework
de Pginas de Formularios Web pasa la entrada de usuario al control o controles de validacin.
Los controles de validacin testean las entradas del usuario y establecen una propiedad para
indicar si la entrada ha pasado el test de validacin. Despus de procesarse todos los controles de
validacin, la propiedad IsValid de la pgina se establece; si alguno de los controles muestra un
fallo de validacin, la pgina entera se marca como invlida.

Si un control de validcin da un error, dicho control mostrar un mensaje de error en la pgina o
en un control ValidationSummary en cualquier otro lugar de la pgina. El control
ValidationSummary se muestra cuando la propiedad IsValid de la pgina est establecida a
"false". Sondea el resto de controles de validacin de la pgina y agrega el texto que cada uno
muestra.



Trabajando con CompareValidator
El control de servidor CompareValidator compara los valores de dos controles.
CompareValidator utiliza tres propiedades clave para realizar su validacin. ControlToValidate y
ControlToCompare contienen los valores a comparar. Operator define el tipo de comparacin a
realizar (por ejemplo Igual o Diferente). CompareValidator realiza la validacin mediante la
evaluacin de estas propiedades como una expresin, de la siguiente manera:
( ControlToValidate ControlToCompare )

Si el resultado de la validacin es "true", el resultado de validacin es vlido. Podemos especificar
opcionalmente la propiedad ValueToCompare para realizar la comparacin con un valor esttico,
en lugar de ControlToCompare.

El control de servidor CompareValidator tambin puede utilizarse para realizar la validacin de
Datatype. Por ejemplo, si la informacin de la fecha de nacimiento se tiene que recoger de la
pgina de registro del usuario, el control CompareValidator se puede utilizar para asegurarnos
que la fecha tiene un formato reconocido, antes de que se enve a la base de datos.

Trabajando con RangeValidator
El control de servidor RangeValidator comprueba si un valor de entrada se encuentra dentro de
un determinado rango. RangeValidator utiliza tres propiedades clave para realizar su validacin.
ControlToValidate contiene el valor a validar. MinimumValue y MaximumValue definen los
valores mnimo y mximo del rango vlido.


Trabajando con Expresiones Regulares
El control de servidor RegularExpressionValidator comprueba que una entrada coincida con un
determiado patrn definido por una expresin regular. Este tipo de validacin nos permite
comprobar secuencias predecibles de carcteres, como nmeros de la seguridad social,
direcciones de e-mail, nmeros de telfono, cdigos postales, etc.

RegularExpressionValidator utiliza dos propiedades clave para realizar la validacin.
ControlToValidate contiene el valor a validar. ValidationExpression contiene la expresin
regular con la que tiene que coincidir.




Realizando Validacin Personalizada
El control de servidor CustomValidator llama a una funcin definida por el usuario para realizar
validaciones que los validadores estndar no pueden llevar a cabo. La funcin personalizada se
puede ejecutar en el servidor o en un script del lado del cliente, por ejemplo JScript o VBScript.
Para la validacin personalizada en el lado del cliente, el nombre de la funcin debe definirse en
la propiedad ClientValidationFunction. Dicha funcin debe tener la forma function
myvalidator(source, arguments). Observad que source es el objeto CustomValidator del
lado cliente, y arguments es un objeto con dos propiedades, Value y IsValid. La propiedad Value
es el valor que tendremos que validar y la propiedad IsValid es un Boolean en el que se dovolver
el resultado de la validacin.

Para validacin personalizada del lado del servidor, tendremos que poner nuestra validacin en el
delegado de OnServerValidate del validador.


ValidateEmptyText Nuevo en 2.0
La propiedad ValidateEmptyText, nueva en ASP.NET 2.0, soluciona un problema con
CustomValidator. En ASP.NET 1.0, la validacin personalizada no se ejecutaba si el texto de
ControlToValidate estaba vaco. Podemos fijar esta propiedad a "true" para hacer que la
validacin personalizada se realice para valores de entrada vacos.
Validation Groups Nuevo en 2.0
La propiedad ValidationGroup se utiliza cuando el usuario quiere tener escenarios de validacin
diferentes en la misma pgina. Estableceremos el nombre del grupo en el validador y en el botn
o en otro control "postback" que cause la validacin. sto es til con controles Wizard, MultiView
o controles de datos (edicin). Por defecto, todos los validadores se encuentran en el grupo ""
(grupo por defecto), para compatibilidad haca atrs (con versiones anteriores). Page nos
proporciona adems los mtodos GetValidators("group") y Validate("group"). Page.IsValidrefleja
la validez de todos los controles (acumulativa) que han sido llamados a Validate .

El siguiente ejemplo muestra la propiedad ValidationGroup. Para ver su comportamiento, haced
clic en el primet botn (Search) de la pgina, despus haced clic en el segundo botn.
SetFocusOnError Nuevo en 2.0
Otra caracterstica nueva de ASP.NET 2.0 es SetFocusOnError que se establece en controles de
validacin y hace que el primer control invlido reciba el foco. Para ms informacin sobre
SetFocusOnError acudid al tpico Focus API de la seccin Tips and Tricks.

You might also like