Compartir a través de


Cómo: Validar con una función personalizada para controles de servidor ASP.NET

Actualización: noviembre 2007

Si los controles de validación ASP.NET existentes no se ajustan a sus necesidades, puede definir una función de validación en el servidor personalizada y llamarla mediante el control CustomValidator. También puede agregar la validación en el cliente para comprobar los datos proporcionados por el usuario antes de que se envíe la página, escribiendo una función en ECMAScript (JavaScript) que duplique la lógica del método de servidor.

Debería realizar la validación en el servidor aún cuando utilice una comprobación en el cliente. La validación en el servidor ayuda a evitar que los usuarios omitan la validación deshabilitando o cambiando la secuencia de comandos del cliente.

Nota de seguridad:

De manera predeterminada, las páginas Web ASP.NET comprueban automáticamente que usuarios con malas intenciones no intenten enviar secuencias de comandos o elementos HTML a la aplicación. Para obtener más información, vea Información general sobre los ataques mediante secuencias de comandos.

Para validar en el servidor utilizando una función personalizada

  1. Agregue un control CustomValidator a la página y establezca las propiedades siguientes:

    Propiedad

    Descripción

    ControlToValidate

    Id. del control que está validando.

    ErrorMessage, Text, Display

    Propiedades que especifican el texto y la ubicación del error o errores que se mostrarán si no se supera la validación. Para obtener información detallada, vea Cómo: Controlar la presentación de los mensajes de error de validación para los controles de servidor ASP.NET.

  2. Cree un controlador de eventos de servidor para el evento ServerValidate del control. Para realizar la validación se llama a este evento. El método tiene una firma como la siguiente:

    Protected Sub CustomValidator1_ServerValidate(ByVal _
       source As System.Object, ByVal args As _
       System.Web.UI.WebControls.ServerValidateEventArgs) _
       Handles CustomValidator1.ServerValidate
    End Sub
    
    protected void ValidationFunctionName(object source, ServerValidateEventArgs args)
    {
    
    }
    

    El parámetro source es una referencia al control de validación personalizado que inicia este evento. La propiedad args.Value contiene los datos proporcionados por el usuario que se van a validar. Establezca args.IsValid en true si el valor es válido; de lo contrario, es false.

    En el ejemplo de código siguiente se muestra cómo crear una validación personalizada. El controlador de eventos determina si los datos proporcionados por el usuario tienen una longitud de ocho caracteres o más.

    Protected Sub TextValidate(ByVal source As System.Object, _
       ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) _
       Handles CustomValidator1.ServerValidate
        args.IsValid = (args.Value.Length >= 8)
    End Sub
    
    protected void TextValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = (args.Value.Length >= 8);
    }
    
  3. Enlace el controlador de eventos al método utilizando código como el siguiente:

    <asp:textbox id="TextBox1" ></asp:textbox>
    <asp:CustomValidator id="CustomValidator1"  
     OnServerValidate="TextValidate" 
     ControlToValidate="TextBox1" 
     ErrorMessage="Text must be 8 or more characters.">
    </asp:CustomValidator>
    
    <asp:textbox id="TextBox1" ></asp:textbox>
    <asp:CustomValidator id="CustomValidator1"  
      OnServerValidate="TextValidate" 
      ControlToValidate="TextBox1" 
      ErrorMessage="Text must be 8 or more characters.">
    </asp:CustomValidator>
    
  4. Agregue una prueba al código de la página Web ASP.NET para comprobar su validez. Para obtener información detallada, vea Cómo: Probar mediante programación la validez de controles de servidor ASP.NET.

Para crear una lógica de validación personalizada en el cliente

  1. Cree una función de validación en ECMAScript (JavaScript, JScript).

    En el siguiente ejemplo de código se muestra una validación personalizada en el cliente. Un fragmento de la página muestra un control TextBox al que hace referencia un control CustomValidator. El control de validación llama a una función de secuencia de comandos de cliente denominada validateLength para asegurarse de que el usuario ha escrito al menos ocho caracteres en el control TextBox.

    <script type="text/javascript">
      function validateLength(oSrc, args){
       args.IsValid = (args.Value.length >= 8);
    }
    </script>
    
    <script type="text/javascript">
      function validateLength(oSrc, args){
       args.IsValid = (args.Value.length >= 8);
    }
    </script>
    
    <asp:Textbox id="text1"  text=""></asp:Textbox>
    <asp:CustomValidator id="CustomValidator2"  
     ControlToValidate = "text1"
     ErrorMessage = "You must enter at least 8 characters!"
     ClientValidationFunction="validateLength" >
    </asp:CustomValidator>
    
    <asp:Textbox id="text1"  text=""></asp:Textbox>
    <asp:CustomValidator id="CustomValidator2"  
      ControlToValidate = "text1"
      ErrorMessage = "You must enter at least 8 characters!"
      ClientValidationFunction="validateLength" >
    </asp:CustomValidator>
    
  2. Agregue una prueba al código de la página Web ASP.NET para comprobar su validez. Para obtener información detallada, vea Cómo: Probar mediante programación la validez de controles de servidor ASP.NET.

Vea también

Conceptos

Tipos de validación para controles de servidor ASP.NET

Otros recursos

Controles de validación ASP.NET