Informazioni su Antonio Volpon

Ho un'esperienza di più di 25 anni come consulente User Experience e Project Management, in particolare nei settori fashion e luxury, sport ed editoria. [Profilo]

ASP.NET: Validation Controls – Controllare l’input dell’utente


Corso ASP.NET: sesta puntata

Esempio funzionante | Sorgente | Scarica il sorgente (zip)

Se avete realizzato form per l’inserimento di dati, sapete che uno dei compiti più noiosi e complessi è la verifica delle informazioni inserite: campi obbligatori, indirizzo di email valido, valore compreso tra un massimo ed un minimo.

In ASP.NET sono disponibili i Validation Controls, un insieme di controlli che automatizzano queste operazioni e che sono altamente personalizzabili.

I Validation Controls sono utilizzati nelle form per verificare se:

  • tutti i campi obbligatori sono stati compilati
  • il valore di un campo ha un valore fisso stabilito
  • il valore di un campo rientra in un intervallo
  • il valore inserito in un campo è uguale a quello di un altro controllo
  • il valore inserito rispetta un algoritmo (ad esempio un numero primo)

Campi obbligatori

L’esempio seguente introduce il ruolo dei Validation Control e in particolare del RequiredFieldValidator Control.

È visualizzata una form con due campi obbligatori: nome e cognome.

La form con i campi per il nome e il cognome

Se compilate correttamente i campi, la pagina vi ringrazia:

La form compilata correttamente

Se invece vi siete dimenticati di inserire un valore, siete subito avvisati:

La form avvisa della mancanza di un valore

Analizziamo ora il codice sorgente della pagina.

Sono presenti due controlli di tipo RequiredFieldValidator, usati per verificare la presenza di un valore per il campo.

Sono definiti in questo modo:

 53  <asp:RequiredFieldValidator id="reqNome"
 54  ControlToValidate="txtNome"
 55  Display="Static"
 56  runat="server">

e

 65  <asp:RequiredFieldValidator id="reqCognome"
 66  ControlToValidate="txtCognome"
 67  Display="Static"
 68  runat="server">

Con l’attributo ControlToValidate viene indicato il nome (id) del controllo da verificare.

Display=”static” indica invece che lo spazio video normalmente utilizzato dal messaggio di errore (* campo obbligatorio) viene occupato anche quando l’errore non si verifica. Questa soluzione, soprattutto nel caso di tabelle, consente di evitare il fastidioso “effetto fisarmonica” in presenza di celle che si adattano alla dimensione del contenuto.

Dhtml e convalida lato client

In generale, la verifica delle validità dei campi dovrebbe avvenire sia lato client, sia lato server:

  • Lato client: si evita di inviare dati al server quando il browser può controllarne la validità con funzioni Javascript
  • Lato server: se il browser non interpreta Javascript oppure Javascript è disabilitato, il server si preoccupa di verificare la validità dei dati inseriti

I Validation Control sono in grado di generare automaticamente codice Javascript e Dhtml per la verifica lato client dei campi compilati.

Questo tipo di soluzione:

  • consente ad Internet Explorer 5+ di verificare lato client la validità dei dati
  • non funziona con Netscape: il controllo dei valori passa al server

Se utilizziamo Netscape e compiliamo in modo incompleto la pagina, la risposta è leggermente diversa:

La pagina di risposta con Netscape

In questo caso compare infatti il messaggio Devi compilare correttamente tutti i campi, cosa che con Internet Explorer non si verifica.

Questo si verifica perché il browser ha contattato direttamente il server per la convalida.

Il codice eseguito dalla pagina ASP.NET lato server è il seguente:

 16 <script language="vb" runat="server">
 17 
 18  Sub Button_Click(objSender as object, objArgs as EventArgs)
 19 
 20      If Page.IsValid Then
 21        risposta.InnerText = "Grazie per i tuoi dati."
 22      Else
 23        risposta.InnerText = "Devi compilare correttamente i campi."
 24      End If
 25      
 26  End Sub
 27 
 28 </script>

L’oggetto Page dispone della proprietà IsValid: è posta a true quando si verificano errori di convalida per uno o più controlli.

Esistono altre due interessanti proprietà non utilizzate nell’esempio:

  • Enabled: disabilita la convalida sul controllo
  • EnableClientScript: se posta a false disabilita il controllo lato client

Conclusione

I Validation Controls sono un ottimo strumento per controllare e verificare i dati inseriti dagli utenti. Permettono la verifica sia lato server sia lato client, anche se quest’ultimo caso è vero solo per gli utenti di Internet Explorer.

Google per gli sviluppatori

Lo staff di Google ha reso disponibile una serie di Api [nuova finestra] per la realizzazione di programmi che possano interrogare il famoso motore di ricerca.

In questo modo il programmatore può sviluppare applicazioni (con Visual Studio .Net, Java, ecc.) che si connettano a Google, eseguano una query ed estraggano i risultati.

Il servizio è disponibile come Web Service e per accedervi è necessario utilizzare il protocollo Soap.

Le Google Api sono attualmente in fase beta e sono quindi soggette ad alcune limitazioni:

  • possono essere eseguite al massimo 1000 interrogazioni al giorno
  • sono restituiti al massimo 100 risultati per interrogazione
  • è possibile accedere solo ai primi 1000 risultati di una interrogazione
  • non è garantita la continuità del servizio

Per poter utilizzare il servizio è necessario registrarsi. In questo modo verrà creato un numero di licenza personale da usare ad ogni chiamata del Web Service.

è disponibile per il download un kit per gli sviluppatori: contiene degli esempi in Java e C#.

Solo testo non è accessibile

Molti designer sono convinti che l’approccio migliore per rendere un sito accessibile sia la costruzione di una versione parallela, di solo testo.

In un articolo [nuova finestra] pubblicato da Usability InfoCentre, Mark Magennis nota come non sempre questo sia l’approccio corretto:

  • esistono delle patologie per le quali immagini e colori sono di aiuto invece che di impedimento
  • una versione arricchita aiuta anche chi ha problemi d’apprendimento
  • una versione solo testo corre il rischio di essere considerata dal disabile una versione per l’utente di serie B

Magennis sostiene che, a parte rari casi, non ci sono scusanti per includere le regole di accessibilità direttamente nella versione principale del sito. Rendere un sito accessibile significa infatti aggiungere, più che togliere, funzionalità.