Вы находитесь на странице: 1из 6

Efectuar la validacin

1. COMPROBACIN DE INTERVALOS tra de las validaciones que necesitaremos realizar frecuentemente es comprobar que un valor est comprendido en un intervalo o rango de valores vlidos. Utilizando un control del tipo RangeValidator, podremos comprobarlo para texto, fechas, nmeros y valores monetarios. Realmente el control es muy sencillo y no se diferencia mucho de los que ya conocemos. Vamos a verlo en el nuevo campo donde el usuario puede introducir su edad. As permitimos que bien nos proporcione su fecha de nacimiento o su edad, segn le convenga. Adems de las ya conocidas propiedades Display, ErrorMessage, Text, ControlToValidate e ID, un RangeValidator dispone de las propiedades : MinimumValue: el valor inferior del intervalo vlido. MaximumValue: el valor superior del intervalo vlido. Este control de validacin sirve tanto para texto, fechas, nmeros o valores monetarios, pero hay que indicarlo en su propiedad Type. Es muy importante indicarlo en esta propiedad o la validacin no ser correcta. Si se trata de un valor entero, utilizaremos Integer en la propiedad Type; si es un valor numrico con parte decimal, tendra que indicar el tipo Double; si fuera fecha, elegira Date; en el caso de texto, elegira String y si fuera un valor monetario, Currency. Debe saber que si el usuario deja en blanco un campo de formulario para el que se ha establecido un control RangeValidator, la validacin se efectuar como si el valor fuera correcto. Esto seguramente no es adecuado, por lo que debera aadir, adems, un control RequiredFieldValidator si es necesario para esa informacin. En nuestro caso esto no lo vamos a hacer porque habamos indicado que el usuario puede elegir introducir su fecha de nacimiento o su edad.
Copyright (c) Computer Aided Education S.A.

Efectuar la validacin

Por lo tanto, deberamos controlar, en el cdigo de detrs del formulario, que haya dejado en blanco ambos campos.
Slo como referencia, indicarle que si ninguno de los controles de validacin de servidor que hemos visto le sirve realmente para lo que necesita, podr programar una funcin propia que valide alguna entrada del usuario. Para ello utilizar el control CustomValidator, disponible en el Cuadro de herramientas. Este control se enlaza con una funcin de validacin en la parte servidor a travs de su evento ServerValidate. Por lo tanto, usted escribir cdigo de validacin en el procedimiento para dicho evento. Adems, tambin podr escribir una funcin equivalente para la parte cliente si desea que adicionalmente se pueda validar en el propio navegador. En este caso, escribir una funcin en JavaScript y la incorporar como parte del cdigo HTML del formulario Web, en un bloque <script>. Esta funcin se indicar en la propiedad ClientValidationFunction del control CustomValidator. Si lo desea, puede obtener ms informacin sobre el control CustomValidator en la documentacin de la biblioteca MSDN.

2. EL CONTROL VALIDATIONSUMMARY ormalmente, los controles de validacin no aparecen en la pgina y, por lo tanto, no ocupan espacio en pantalla hasta que ocurre un error. El mensaje de error se puede mostrar de distintas formas: Cada control de validacin puede mostrar un mensaje individual, que suele aparecer al lado del control que est validando. Este mensaje es el que indicamos en la propiedad ErrorMessage. De forma resumida en un control especial llamado ValidationSummary. En este caso, todos los mensajes de error que tienen que aparecer tras la validacin se muestran en este control de resumen. Si el navegador utilizado es Internet Explorer, incluso estos mensajes tambin podran mostrarse en un cuadro de dilogo.
2

Efectuar la validacin

Normalmente, el resumen de la validacin con todos los mensajes de error se muestra en la parte superior o inferior de la pgina. La cuestin es que debemos dibujar el control en un lugar con suficiente espacio para que se puedan mostrar todos los mensajes de error a la vez. En la propiedad DisplayMode del ValidationSummary podremos indicar cmo se mostrarn los mensajes de error en el interior del control de resumen: como una lista de vietas (BulletList), cada elemento en una lnea distinta (List) o cada mensaje como una frase en un prrafo (SingleParagraph).

Si quiere que, adicionalmente, aparezca un cuadro de dilogo con la misma informacin, establezca la propiedad ShowMessageBox a True del control ValidationSummary. Esto slo funcionar con Internet Explorer.

Si incluye un control de resumen como ste, los mensajes de la propiedad ErrorMessage siempre se mostrarn en su interior; no hace falta enlazar el control ValidationSummary con ningn control de validacin. El control ValidationSummary puede aumentar su tamao para acoger a todos los mensajes de error que tiene que mostrar. Si adems quiere que los mensajes de error tambin se muestren al lado de cada control que no ha superado la validacin, deber incluir el mensaje oportuno en la propiedad Text. Por ejemplo, podramos incluir un asterisco en esta propiedad y un mensaje ms descriptivo en ErrorMessage.

Copyright (c) Computer Aided Education S.A.

Efectuar la validacin

Finalmente, podra personalizar la forma en que se muestra el error capturando la informacin de error y diseando su resultado. Por ejemplo, podra resaltar los errores cambiando el color del fondo en aquellos campos incorrectos. Tambin tiene opciones para especificar el formato y la presentacin de los mensajes de error. Para obtener ms informacin, busque Dar formato a los mensajes de error de validacin para controles de servidor ASP .NET en la documentacin MSDN. 3. COMPROBAR LA VALIDEZ

ste es el captulo ms importante de todo el asunto de la validacin.

Seguramente no tiene muy claro por qu se ha indicado que aunque la validacin la efecte Internet Explorer, sigue siendo una validacin de servidor. Bien, debe saber que los controles de validacin slo prueban las entradas de los usuarios, establecen un estado de error y muestran opcionalmente sus mensajes de error. Sin embargo, no modifican para nada el flujo del procesamiento de la pgina. Por ejemplo, si usted ha incluido cdigo para guardar la informacin del nuevo usuario al pulsar en el botn Enviar, ste cdigo se ejecutar aunque alguno de los controles de validacin proporcione un mensaje de error. Y es que realmente, estos controles no hacen nada ms que eso: mostrar mensajes de error cuando as se requiere debido a la informacin suministrada por el usuario. Por lo tanto, es responsabilidad nuestra comprobar la validez de la informacin y, en el caso correcto, guardarla o procesarla como queramos. Podramos hacerlo en el cdigo que se ejecuta al pulsar en un botn Enviar o similar:
Private Sub btnEnviar_Click(...) Handles btnEnviar.Click If Me.IsValid Then 'Procesar la informacin suministrada por el usuario End If End Sub 4

Efectuar la validacin

Aqu est la clave de todo esto. Utilizamos la propiedad IsValid del formulario (representado aqu por la palabra clave Me) para comprobar si la informacin es vlida o no. Esta propiedad estar a True si todos los controles de validacin incluidos en el formulario tienen el estado vlido, es decir, que la informacin suministrada por el usuario ha superado las validaciones impuestas. En caso contrario, es decir, si alguno de estos controles muestra su mensaje de error porque la informacin suministrada es incorrecta, la propiedad IsValid del formulario tendr el valor False. Vemos que si todo ha ido bien, se escribira el cdigo necesario para procesar esta informacin (por ejemplo, guardarla en una base de datos) y si no es as, no escribimos ningn cdigo, sino simplemente dejamos que el servidor devuelva la pgina incluyendo los mensajes de error. Por otra parte, es posible que le interese conocer qu controles de validacin estn en un estado no vlido. Para ello puede recorrer la coleccin Validators del formulario, que contiene referencias a todos los controles de validacin, y examinar la propiedad IsValid de cada uno de esos controles. Por ejemplo, esto podra ser adecuado si queremos personalizar los mensajes de error o cambiar el aspecto de aquellos campos del formulario donde la informacin introducida es incorrecta. Finalmente, debe conocer que la informacin de validacin no est disponible al cargar la pgina, sino ms tarde. Sin embargo, si quiere comprobar la validez de la pgina en el evento Page_Load, puede llamar manualmente al mtodo Validate del formulario para que se produzca en ese momento y disponer de esta forma de dicha informacin.
Aqu puede ver el cdigo que podra utilizar para el evento Load del formulario. Fjese que se comprueba si no es la primera vez que se carga la pgina (con la propiedad IsPostBack que tendr el valor True) y, en ese caso, se llama al mtodo Validate del formulario para obtener la informacin de validacin. Recuerde que esto es necesario, ya que esta informacin no est disponible por defecto durante la carga de la pgina.
Copyright (c) Computer Aided Education S.A.

Efectuar la validacin

Finalmente, se recorre la coleccin Validators del formulario para comprobar qu control de validacin no est en estado vlido. Private Sub Page_Load(...) Handles MyBase.Load If Me.IsPostBack Then Me.Validate( ) If (Not Me.IsValid Then) Dim v As IValidator For Each v In Me.Validators If v.IsValid = False Then 'Cdigo para resaltar el campo u otro proceso End If Next End If End If End Sub

Вам также может понравиться