Condividi tramite


Procedura: eseguire la convalida con una funzione personalizzata per i controlli server ASP.NET

Aggiornamento: novembre 2007

Se i controlli di convalida ASP.NET esistenti non soddisfano le proprie esigenze, è possibile definire una funzione di convalida personalizzata sul lato server e chiamarla utilizzando il controllo CustomValidator . È inoltre possibile aggiungere una convalida lato client per verificare l'input dell'utente prima dell'invio della pagina, scrivendo una funzione in ECMAScript (JScript) che replica la logica del metodo sul lato server.

È opportuno eseguire una convalida lato server anche se si utilizza un controllo sul lato client. Tramite la convalida lato server è possibile evitare che gli utenti ignorino la convalida disattivando o modificando lo script client.

Nota sulla sicurezza:

Per impostazione predefinita, le pagine Web ASP.NET verificano automaticamente che utenti malintenzionati non tentino di inviare script o elementi HTML all'applicazione. Per ulteriori informazioni, vedere Cenni preliminari sugli attacchi tramite script.

Per eseguire la convalida sul server tramite una funzione personalizzata

  1. Aggiungere un controllo CustomValidator alla pagina e impostare le proprietà riportate di seguito.

    Proprietà

    Descrizione

    ControlToValidate

    ID del controllo da convalidare.

    ErrorMessage, Text, Display

    Proprietà che specificano il testo e il percorso dell'errore o degli errori visualizzati se la convalida non riesce. Per informazioni dettagliate, vedere Procedura: controllare la visualizzazione dei messaggi di errore di convalida per i controlli server ASP.NET.

  2. Creare un gestore eventi basato sul server per l'evento ServerValidate del controllo. L'evento viene chiamato per eseguire la convalida. La firma del metodo è simile a quella riportata di seguito:

    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)
    {
    
    }
    

    Il parametro source è un riferimento al controllo di convalida personalizzato che genera l'evento. La proprietà args.Value conterrà l'input dell'utente da convalidare. Impostare args.IsValid su true se il valore è valido. In caso contrario, impostare false.

    Nell'esempio di codice riportato di seguito viene illustrato come creare una convalida personalizzata. Il gestore eventi stabilisce se i dati immessi dall'utente sono composti da otto o più caratteri.

    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. Associare il gestore eventi al metodo utilizzando codice come quello riportato di seguito.

    <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. Aggiungere un test al codice della pagina Web ASP.NET per verificarne la validità. Per informazioni dettagliate, vedere Procedura: eseguire il test della validità dei controlli server ASP.NET a livello di codice.

Per creare una logica di convalida personalizzata sul client

  1. Creare una funzione di convalida in ECMAScript (JavaScript, JScript).

    Nel codice di esempio riportato di seguito viene illustrata la convalida personalizzata sul lato client. In un estratto della pagina viene visualizzato un controllo TextBox a cui fa riferimento un controllo CustomValidator. Il controllo di convalida chiama una funzione script client denominata validateLength per accertarsi che l'utente abbia immesso almeno otto caratteri nel controllo 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. Aggiungere un test al codice della pagina Web ASP.NET per verificarne la validità. Per informazioni dettagliate, vedere Procedura: eseguire il test della validità dei controlli server ASP.NET a livello di codice.

Vedere anche

Concetti

Tipi di convalida per i controlli ASP.NET lato server

Altre risorse

Convalida dei controlli ASP.NET