Validar la información especificada por el usuario en páginas Web ASP.NET

Actualización: noviembre 2007

Mediante los controles de validación se puede agregar validación de entrada a las páginas Web ASP.NET. Los controles de validación proporcionan un mecanismo fácil de utilizar para todos los tipos comunes de validación estándar (por ejemplo, probar fechas válidas o valores comprendidos en un intervalo), además de otras formas para proporcionar validación escrita personalizada. Además, los controles de validación permiten personalizar completamente cómo se muestra la información de errores al usuario.

Los controles de validación se pueden utilizar con cualquier control que se coloque en una página Web ASP.NET, incluidos los controles HTML y de servidor Web. Para obtener más información, vea Información general sobre los controles de servidor Web ASP.NET.

Nota de seguridad:

De forma predeterminada, las páginas Web ASP.NET comprueban automáticamente la entrada de datos potencialmente malintencionados. Para obtener más información, vea Información general sobre los ataques mediante secuencias de comandos.

Utilizar controles de validación

Habilite la validación de los datos introducidos por el usuario agregando controles de validación a la página como lo haría con otros controles de servidor. Existen controles para distintos tipos de validación, como la comprobación de un intervalo o la comparación de modelos. Para obtener una lista completa de los tipos de validación, vea Tipos de validación para controles de servidor ASP.NET. Cada control de validación hace referencia a un control de entrada (un control de servidor) situado en otra parte de la página. Cuando se procesan los datos introducidos por el usuario (por ejemplo, cuando se envía una página), el control de validación comprueba dichos datos y establece una propiedad para indicar si han pasado la comprobación. Una vez que se ha llamado a todos los controles de validación, se establece una propiedad en la página que indica si alguna de las comprobaciones de validación ha producido un error.

Los controles de validación se pueden asociar en grupos de validación a fin de que los controles que pertenezcan a un grupo común se validen juntos. Puede utilizar estos grupos para habilitar o deshabilitar de forma selectiva la validación para controles relacionados en una página. Otras operaciones de validación, como mostrar un control ValidationSummary o llamar al método GetValidators, pueden hacer referencia al grupo de validación.

En su propio código puede probar el estado de la página y de los controles individuales. Por ejemplo, podría probar el estado de los controles de validación antes de actualizar un registro de datos con información introducida por el usuario. Si se detecta un estado no válido, se omite la actualización. Normalmente, si una comprobación de validación produce errores, se omite todo el procesamiento y se devuelve la página al usuario. Los controles de validación que detectan errores generan un mensaje de error que aparece en la página. Puede mostrar todos los errores de validación en un solo lugar mediante un control ValidationSummary.

Nota:

Los controles enlazados a datos que actualizan, insertan y eliminan datos, como los controles GridView, FormView y DetailsView, comprueban automáticamente si se han realizado las comprobaciones de validación antes de realizar una operación de actualización de datos.

Cuándo se produce la validación

Los controles de validación ejecutan la comprobación de los datos introducidos en el código del servidor. Cuando el usuario envía una página al servidor, los controles de validación se invocan para comprobar los datos introducidos por el usuario, control a control. Si se detecta un error de validación en uno de los controles de entrada de datos, la propia página se establece en un estado no válido para que se pueda probar la validez antes de ejecutar el código. La validación se produce después de la inicialización de la página (es decir, después de que el estado de vista y los datos devueltos se hayan procesado) pero antes de llamar a los controladores de eventos Change o Click.

Si el usuario está trabajando con un explorador compatible con ECMAScript (Javascript), los controles de validación también pueden realizar la validación mediante secuencias de comandos del cliente. Esto puede mejorar el tiempo de respuesta de la página, ya que los errores se detectan inmediatamente y los mensajes de error se muestran en cuanto el usuario abandona el control que contiene el error. Si la validación está disponible en el cliente, se obtiene más control sobre la presentación de los mensajes de error y se puede mostrar un resumen de errores en un cuadro de mensaje. Para obtener más información, vea Validación en el cliente para controles de servidor ASP.NET.

ASP.NET ejecuta una validación en el servidor aunque los controles de validación la hayan ejecutado en el cliente, por lo que puede probar la validez en los controladores de eventos basados en el servidor. Además, la nueva comprobación en el servidor ayuda a evitar que los usuarios puedan omitir la validación deshabilitando o cambiando la secuencia de comandos del cliente.

Si lo desea, puede invocar la validación en su propio código llamando al método Validate de un control de validación. Para obtener más información, vea Cómo: Validar mediante programación los controles de servidor ASP.NET.

Validar múltiples condiciones

Cada control de validación normalmente realiza una comprobación. No obstante, es posible que se deseen comprobar múltiples condiciones. Por ejemplo, supongamos que desea especificar que una entrada de usuario es necesaria y que sólo puede contener fechas dentro de un intervalo especificado.

En las páginas se puede asociar más de un control de validación a cada control de entrada. En ese caso, las comprobaciones realizadas por los controles se resuelven utilizando un operador lógico AND, lo que significa que los datos introducidos por el usuario deben pasar todas las comprobaciones para que se consideren válidos.

En algunos casos podrían ser entradas válidas en varios formatos distintos. Por ejemplo, si solicita un número de teléfono, puede permitir que los usuarios introduzcan un número local, un número de larga distancia o un número internacional. El uso de múltiples controles de validación no funcionaría en esta instancia, ya que los datos introducidos por el usuario deben pasar todas las comprobaciones para ser válidos. Para realizar este tipo de comprobación, que es una operación lógica OR en la que sólo se debe pasar una comprobación, utilice el control de validación RegularExpressionValidator y especifique múltiples modelos válidos en el control. Opcionalmente, puede utilizar el control de validación CustomValidator y escribir su propio código de validación.

Mostrar la información de errores

Normalmente, los controles de validación no son visibles en la página presentada. No obstante, si el control detecta un error, muestra el texto del mensaje de error que se especifique. El mensaje de error se puede mostrar de formas diferentes, como se indica en la tabla siguiente.

Método de presentación

Descripción

En contexto

Cada control de validación puede mostrar su propio mensaje de error en contexto (normalmente junto al control donde se ha producido el error).

Resumen

Los errores de validación pueden recopilarse y mostrarse en un lugar, por ejemplo, en la parte superior de la página. Esta estrategia se utiliza a menudo junto con la presentación de un mensaje al lado de los campos de entrada con errores. Si el usuario trabaja con Internet Explorer 4.0 o posterior, el resumen puede mostrarse en un cuadro de mensaje.

Si utiliza grupos de validación, necesita un control ValidationSummary para cada uno de ellos.

En contexto y en un resumen

El mensaje de error puede ser diferente en el resumen y en contexto. Puede utilizar esta opción para mostrar un mensaje de error más corto en el contexto y con más detalles en el resumen.

Personalizado

Puede personalizar la presentación del mensaje de error capturando la información de error y diseñando su propio resultado.

Si utiliza las opciones de presentación en contexto o en un resumen, puede dar formato al texto del mensaje de error mediante HTML.

Nota de seguridad:

Si crea mensajes de error personalizados, asegúrese de que no muestra información que pudiera ayudar a un usuario malintencionado a poner en peligro la aplicación. Para obtener más información, vea Cómo: Mostrar mensajes de error seguros.

Modelo de objetos de validación

El modelo de objetos expuesto por cada uno de los controles de validación y por la página permite interactuar con los controles de validación. Cada control de validación expone su propiedad IsValid, que se puede probar para determinar si se ha pasado la comprobación de validación o ha producido errores en ese control. La página también expone una propiedad IsValid que resume el estado IsValid de todos los controles de validación de la página. Esta propiedad le permite realizar una única comprobación para determinar si puede continuar con su propio procesamiento.

La página también expone una colección Validators que contiene una lista de todos los controles de validación de la página. Puede recorrer esta colección para examinar el estado de controles de validación individuales.

Nota:

El modelo de objetos para la validación en el cliente presenta pocas diferencias. Para obtener más información, vea Validación en el cliente para controles de servidor ASP.NET.

Personalizar la validación

El proceso de validación se puede personalizar de las maneras siguientes:

  • Especificar el formato, el texto y la ubicación de los mensajes de error. Además, se puede especificar si los mensajes de error aparecen de forma individual o como un resumen.

  • Crear validación personalizada utilizando el control CustomValidator. El control llama a la lógica personalizada, pero, por lo demás, funciona de la misma manera que otros controles de validación al establecer el estado de error, mostrar los mensajes de error, etc. Esto proporciona una forma fácil de crear una lógica de validación personalizada, pero sin dejar de utilizar el marco de trabajo de validación de la página.

  • En la validación en el cliente, interceptar la llamada a la validación y sustituir o agregar su propia lógica de validación.

Vea también

Otros recursos

Controles de validación ASP.NET