Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Validazione di form e dati con ASP.NET

Verificare la correttezza dei dati immessi dagli utenti
Verificare la correttezza dei dati immessi dagli utenti
Link copiato negli appunti

Convalidare i dati immessi dagli utenti all'interno dei web form è un compito che gli sviluppatori debbono affrontare molto spesso. Uno dei metodi finora più utilizzati, per verificare che ogni campo contenga un valore accettabile, è quello di predisporre una serie di istruzioni If. Convalidare l'input in questo modo è, però, un'operazione abbastanza lunga e noiosa. Per fortuna ASP.NET ci mette ora a disposizione alcuni controlli che permettono di vagliare con molta facilità i dati che l'utente ha inserito nel form.

Un grande vantaggio dei controlli di convalidazione è anche quello di operare sia a livello client che a livello server. Quando, infatti, l'utente digita dei dati in un form si attiva una prima verifica a livello client. Ciò consente di migliorare notevolmente il rendimento dell'applicazione, permettendo di correggere l'input prima di inviare il form al server.

Successivamente, i valori dei campi vengono convalidati nuovamente a livello server. Questa seconda convalida permette di poter effettuare verifiche non applicabili lato client, come il confronto tra i dati immessi dall'utente e quelli di un database. La convalida lato server consente, inoltre, di effettuare la verifica dei dati anche nei casi in cui il browser non supporti il DHTML o l'utente abbia disabilitato le opzioni JavaScript.

Purtroppo i controlli di convalida funzionano solo su un sottoinsieme limitato di controlli del server. In particolare, è possibile convalidare i seguenti tipi di controlli:

  • HtmlInputText
  • HtmlTextArea
  • HtmlSelect
  • HtmlInputFile
  • TextBox
  • ListBox
  • DropDownList
  • RadioButtonList

I controlli di convalidazione

Nel listato presentiamo il codice per la realizzazione di un form che utilizza i controlli di convalidazione.

Come si evince dal suddetto esempio, esistono diversi tipi di controlli di convalidazione. Ognuno possiede opportune proprietà, ma due di esse sono obbligatorie per ciascun controllo: ControlToValidate, che specifica il nome del controllo del server da convalidare, ed ErrorMessage, che segnala quale sia il messaggio di errore da mostrare all'utente quando la convalidazione non riesce.

RequiredFieldValidator è il più semplice controllo di convalidazione. Verifica la presenza dei dati all'interno di un campo associato. Va introdotto, quindi, quando si hanno dei campi obbligatori nel form (in questo esempio "nome", "cognome", "password", "ripeti password" ed "email").

Il controllo CompareValidator permette di confrontare il valore del campo specificato tramite il parametro ControlToValidate con il valore di un altro campo, specificato mediante il parametro ControlToCompare. In questo esempio CompareValidator è usato per controllare che i valori immessi nei campi "password" e "ripeti password" siano uguali. La proprietà Operator è infatti impostata su Equal. Altri valori possibili per questa proprietà sono: NotEqual, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual e DataTypeCheck. Quest'ultimo controlla che i dati siano del tipo specificato. Il parametro Type specifica il tipo dei dati da confrontare. CompareValidator permette anche di confrontare un controllo del server con un valore costante. In questo caso occorre sostituire il parametro ControlToCompare con ValueToCompare.

RegularExpressionValidator verifica se l'input del campo associato risponde a certi criteri. Nell'esempio questo controllo è utilizzato per convalidare il campo "email". La proprietà ValidationExpression vuole un espressione regolare (regular expression), cioè una stringa contenente simboli speciali, usata per rappresentare particolari sequenze di caratteri.

RangeValidator, infine, permette di delimitare l'input di un controllo entro gli estremi di un intervallo di possibili valori, specificati mediante i parametri MinimumValue e MaximumValue. Il parametro Type specifica il tipo di dati. In questo esempio RangeValidator è usato per controllare il valore del campo "età".

Convalidazione lato server

Come già accennato, occorre cercare di gestire la convalidazione anche dalla parte del server.

Tutti i controlli di convalidazione posseggono una proprietà di tipo booleano IsValid che vale true se la convalidazione ha dato esito positivo e false in caso contrario. Ma il modo più semplice per vagliare la validità di un form è quello di verificare la proprietà IsValid dell'oggetto Page. Questa restituisce il valore false quando anche uno solo dei controlli ha esito negativo.

Nell'esempio citato, quando il form viene inviato al server, il codice esegue la procedura Submit:

Private Sub Submit(ByVal sender As System.Object, ByVal e As System.EventArgs)
    If Page.IsValid Then
        lblMessage.Text = "Pagina validata
con successo!"

        'Inserimento dei dati nel DB
        '...

    Else
        'Messaggio generale d'errore
        'lblMessage.Text = "Uno o più
campi non validi."

        'Rintraccio il controllo responsabile
dell'errore
        Dim objValidator as Ivalidator
        For Each objValidator in Validators
            If Not
objValidator.IsValid Then
                lblMessage.Text
= objValidator.ErrorMessage
            End If
        Next

    End If
End Sub

In questa procedura, Page.IsValid verifica in un sol colpo se tutti i controlli di convalidazione sono stati soddisfatti. Se questo è vero, è possibile continuare con le normali operazioni del programma, se, al contrario, è falso, occorre segnalare la mancata registrazione all'utente.

È possibile, in questo caso, rintracciare il campo in cui è stato immesso il valore errato. La collection Validators contiene riferimenti a tutti i controlli di convalidazione impiegati nella pagina.

La procedura Submit, iterando tra tutti i membri della collection Validators, verifica individualmente ogni controllo.

Ti consigliamo anche