Cómo: Probar mediante programación la validez de controles de servidor ASP.NET

Actualización: noviembre 2007

Los controles de validación prueban la entrada del usuario, establecen un estado de error y producen mensajes de error. No cambian el flujo de procesamiento de la página (por ejemplo, no omiten el código si detectan un error en la entrada del usuario). En lugar de ello, pruebe el estado de los controles en el código antes de realizar la lógica específica de la aplicación. Si detecta un error, estará impidiendo que su propio código se ejecute: la página continuará el proceso y se devolverá al usuario con mensajes de error.

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. Para obtener más información, vea Información general sobre los ataques mediante secuencias de comandos.

Puede probar un estado general de toda la página y el estado de controles individuales. Normalmente, esto se hace en los controladores de eventos que crea para una página.

Para probar un estado de error general

  • En el código, pruebe la propiedad IsValid de la página. Esta propiedad recorre los valores de las propiedades IsValid de todos los controles de validación de la página (utilizando un operador AND lógico); si algún control de validación se establece como no válido, la propiedad de la página devolverá el valor de falso.

    Nota:

    La información de validación no está disponible durante la fase de inicialización o carga de la página. Sin embargo, puede llamar manualmente al método Validate durante Page_Load y, a continuación, probar la propiedad IsValid de la página. Para obtener información detallada sobre estados de páginas, vea Información general sobre el ciclo de vida de una página ASP.NET.

    En el siguiente ejemplo de código se muestra un controlador de eventos para un botón. El código prueba la propiedad IsValid de la página. Observe que no es necesario para una cláusula else, ya que la página volverá automáticamente al explorador y los controles de validación mostrarán sus propios mensajes de error.

    Public Sub Button1_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs) _
    Handles Button1.Click
    
        If Me.IsValid Then
            ' Perform database updates or other logic here
        End If
    End Sub
    
    void Button1_Click(object sender, System.EventArgs e)
    {
        if (IsValid)
        {
            // Perform database updates or other logic here.
        }
    }
    

Para probar el estado de error de controles individuales

  • Recorra la colección Validators de la página, que contiene referencias a todos los controles de validación. A continuación, puede examinar la propiedad IsValid de cada control de validación.

    Nota:

    Si desea realizar esta comprobación durante Page_Load, debe llamar manualmente primero al método Validate.

    El ejemplo de código siguiente muestra cómo puede obtener el estado de controles de validación individuales.

    If (Me.IsPostBack) Then
        Me.Validate()
        If (Not Me.IsValid) Then
            Dim msg As String
            ' Loop through all validation controls to see which 
            ' generated the error(s).
            Dim oValidator As IValidator
            For Each oValidator In Validators
                If oValidator.IsValid = False Then
                    msg = msg & "<br />" & oValidator.ErrorMessage
                End If
            Next
            Label1.Text = msg
        End If
    End If
    
    if (this.IsPostBack)
    {
        this.Validate();
        if (!this.IsValid)
        {
            string msg = "";
            // Loop through all validation controls to see which
            // generated the errors.
            foreach (IValidator aValidator in this.Validators)
            {
                if (!aValidator.IsValid)
                {
                    msg += "<br />" + aValidator.ErrorMessage;
                }
            }
            Label1.Text = msg;
        }
    }
    

Vea también

Tareas

Cómo: Controlar la presentación de los mensajes de error de validación para los controles de servidor ASP.NET

Cómo: Validar mediante programación los controles de servidor ASP.NET

Referencia

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