Procedura: eseguire il test della validità dei controlli server ASP.NET a livello di codice

Aggiornamento: novembre 2007

Grazie ai controlli di convalida è possibile eseguire il test dell'input dell'utente, impostare uno stato di errore e produrre messaggi di errore. Tali controlli non modificano il flusso dell'elaborazione della pagina, ad esempio non ignorano il codice se rilevano un errore nell'input dell'utente. Al contrario, il test dello stato dei controlli nel codice viene eseguito prima della logica specifica dell'applicazione. Se viene rilevato un errore, l'esecuzione del codice non avviene; l'elaborazione della pagina continua ed essa viene restituita all'utente insieme ai messaggi di errore.

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.

È possibile eseguire un test sia di uno stato generale, a livello di pagina, sia dello stato dei controlli individuali. Generalmente queste operazioni vengono eseguite nei gestori eventi creati per una pagina.

Per eseguire un test per uno stato di errore generale

  • Nel codice eseguire il test della proprietà IsValid della pagina. La proprietà presenta informazioni riassuntive sui valori delle proprietà IsValid di tutti i controlli di convalida della pagina (utilizzando un operatore AND logico). Se uno dei controlli di convalida viene impostato come non valido, la proprietà della pagina restituirà il valore false.

    Nota:

    Le informazioni di convalida non sono disponibili durante l'inizializzazione o la fase di caricamento di una pagina. È tuttavia possibile chiamare manualmente il metodo Validate durante l'esecuzione di Page_Load e quindi eseguire il test della proprietà IsValid della pagina. Per informazioni dettagliate sugli stati della pagina, vedere Cenni preliminari sul ciclo di vita di una pagina ASP.NET.

    Nel codice di esempio riportato di seguito viene mostrato il gestore eventi per un pulsante. Nel codice eseguire il test della proprietà IsValid della pagina. Non è necessaria alcuna clausola else, in quanto la pagina verrà restituita automaticamente al browser e i messaggi di errore verranno visualizzati nei relativi controlli di convalida.

    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.
        }
    }
    

Per eseguire il test dello stato di errore dei controlli individuali

  • Scorrere in ciclo l'insieme Validators della pagina che contiene riferimenti a tutti i controlli di convalida. Passare quindi a esaminare la proprietà IsValid di ogni controllo di convalida.

    Nota:

    Per eseguire questo controllo durante l'esecuzione di Page_Load, chiamare prima manualmente il metodo Validate.

    Nel codice di esempio riportato di seguito viene illustrato come ottenere informazioni sullo stato dei singoli controlli di convalida.

    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;
        }
    }
    

Vedere anche

Attività

Procedura: controllare la visualizzazione dei messaggi di errore di convalida per i controlli server ASP.NET

Procedura: convalidare i controlli server ASP.NET a livello di codice

Riferimenti

Convalida dell'input utente nelle pagine Web ASP.NET