Cómo: Validar mediante programación los controles de servidor ASP.NET
Actualización: noviembre 2007
De forma predeterminada, los controles de validación ASP.NET realizan validación automática cuando se devuelve la página al servidor, después de la inicialización de la página (es decir, después de procesar el estado de vista y los datos devueltos) y antes de que se llame al código de control de eventos. Los controles podrían realizar también la validación en el explorador si éste admite la secuencia de comandos del cliente.
Sin embargo, hay ocasiones en las que deseará realizar personalmente la validación mediante programación. Podría realizar la validación mediante programación bajo estas circunstancias:
Si los valores de validación no se han establecido hasta el momento de la ejecución. Por ejemplo, si trabaja con un control RangeValidator, podría establecer las propiedades MinimumValue y MaximumValue en tiempo de ejecución basándose en valores introducidos por el usuario. En este caso, la validación predeterminada no funciona, porque en el momento en que la página llama a los controles de validación para realizar la validación, no hay suficiente información en el control RangeValidator.
Si desea determinar la validez de un control (o de una página como un todo) en el controlador de eventos Page_Load. En esa etapa de procesamiento de páginas, no se ha llamado todavía a los controles de validación, de modo que la propiedad IsValid de la página o de controles individuales no está establecida. (Se produce una excepción si intenta obtener el valor de esta propiedad.) No obstante, si desea determinar la validez, puede ejecutar la validación mediante programación.
Si agrega controles (controles de entrada o de validación) en tiempo de ejecución.
De forma más general, puede realizar la validación mediante programación cada vez que desee tener un control preciso sobre el momento en que se llevará a cabo la validación.
Nota de seguridad: |
---|
De manera predeterminada, las páginas Web ASP.NET comprueban automáticamente que ningún usuario con malas intenciones esté intentando enviar secuencias de comandos ni elementos HTML a la aplicación. Si deshabilita esta característica, puede llamar al método ValidateInput manualmente. Para obtener más información, vea Información general sobre los ataques mediante secuencias de comandos. |
Para validar mediante programación
Llame al método Validate del control de validación.
El control realizará su comprobación y establecerá la propiedad IsValid del control y la página. Si se ha detectado un error, cuando la página se devuelve al usuario, se mostrarán como de costumbre mensajes de error.
En el siguiente ejemplo de código se muestra cómo establecer propiedades mediante programación. En este caso, una página Web ASP.NET acepta reservas para un complejo turístico que ofrece un paseo gratis durante cada visita. Los usuarios deben introducir una fecha de llegada y una fecha de salida y luego programar la gira durante la visita. Se utiliza el control RangeValidator para asegurarse de que el usuario ha introducido un formato de fecha habitual y que la fecha de la gira está dentro de las fechas de llegada y salida.
Nota: Si un usuario escribe un valor que no se puede convertir en una fecha, el control de validación producirá una excepción. Para simplificarlo, en este ejemplo no se incluye el control de errores.
Las fechas de llegada y salida proceden de dos controles del servidor Web TextBox en la página, txtArrival y txtDeparture. La fecha del paseo se introduce en un tercer control TextBox, txtTourDate, que el control RangeValidator valida.
Nota: Cuando se realiza una validación mediante programación, se debe deshabilitar la secuencia de comandos del cliente para que el control no muestre mensajes de error incorrectos antes de que se ejecute el código de validación en el servidor. Para obtener información detallada, vea Cómo: Deshabilitar la validación para controles de servidor ASP.NET.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click RangeValidator1.MinimumValue = txtArrival.Text RangeValidator1.MaximumValue = txtDeparture.Text RangeValidator1.Type = ValidationDataType.Date RangeValidator1.Validate() If Not RangeValidator1.IsValid Then RangeValidator1.ErrorMessage = "The tour date must " & _ "fall between the arrival and departure dates." End If End Sub
private void Button1_Click(object sender, System.EventArgs e) { RangeValidator1.MinimumValue = txtArrival.Text; RangeValidator1.MaximumValue = txtDeparture.Text; RangeValidator1.Type = ValidationDataType.Date; RangeValidator1.Validate(); if (!RangeValidator1.IsValid) { RangeValidator1.ErrorMessage = "The tour date must " + "fall between the arrival and departure dates."; } }
Vea también
Conceptos
Tipos de validación para controles de servidor ASP.NET