Convalida dell'input utente nelle pagine Web ASP.NET

Aggiornamento: novembre 2007

Grazie ai controlli di convalida, è possibile aggiungere la convalida dell'input alle pagine Web ASP.NET e utilizzare in modo facile tutti i tipi comuni di convalida standard, come la verifica delle date o dei valori validi all'interno di un intervallo; essi forniscono inoltre modi per assicurare una convalida personalizzata. Inoltre, grazie a tali controlli, è possibile personalizzare la visualizzazione delle informazioni relative agli errori.

I controlli di convalida possono essere utilizzati con qualsiasi controllo inserito in una pagina Web ASP.NET, compresi i controlli HTML e server Web. Per ulteriori informazioni, vedere Cenni preliminari sui controlli server Web ASP.NET.

Nota sulla sicurezza:

Per impostazione predefinita, le pagine Web ASP.NET eseguono automaticamente un controllo degli input potenzialmente dannosi. Per ulteriori informazioni, vedere Cenni preliminari sugli attacchi tramite script.

Utilizzo dei controlli di convalida

Per attivare la convalida dei dati immessi dall'utente, è sufficiente aggiungere i controlli di convalida alla pagina come se fossero altri controlli server. Esistono controlli per diversi tipi di convalida, come la verifica dell'intervallo o il criterio di ricerca. Per un elenco completo dei tipi di convalida, vedere Tipi di convalida per i controlli ASP.NET lato server. Esiste un riferimento per ogni controllo di convalida a un altro controllo di input, ovvero un controllo server, che si trova in un altro punto della pagina. Quando vengono elaborati i dati immessi dall'utente (ad esempio, quando viene inoltrata una pagina), il controllo di convalida esegue il test di tali dati e imposta una proprietà per indicare se una voce ha passato il test. Dopo che sono stati chiamati tutti i controlli di convalida, viene impostata sulla pagina una proprietà che segnala l'eventuale esito negativo di un controllo di convalida.

I controlli di convalida possono essere associati in gruppi, in modo da poter convalidare insieme quelli appartenenti a un gruppo comune. I gruppi di convalida possono essere utilizzati per attivare o disattivare in modo selettivo la convalida dei relativi controlli su una pagina. Ad altre operazioni di convalida, come, ad esempio, la visualizzazione di un controllo ValidationSummary o l'esecuzione della chiamata al metodo GetValidators, può essere aggiunto un riferimento al gruppo di convalida.

È possibile eseguire il test dello stato della pagina e dei controlli individuali nel codice. Sarebbe ad esempio possibile eseguire il test dello stato dei controlli di convalida prima di aggiornare un record di dati con le informazioni immesse dall'utente. Se si rileva uno stato non valido, si evita l'aggiornamento. In genere, se uno o più controlli di convalida hanno esito negativo, è possibile evitare l'elaborazione e restituire la pagina all'utente. I controlli di convalida che hanno rilevato gli errori determinano la visualizzazione sulla pagina di un messaggio di errore. È possibile visualizzare tutti gli errori di convalida in un'unica posizione utilizzando un controllo ValidationSummary.

Nota:

I controlli associati ai dati che aggiornano, inseriscono ed eliminano i dati, come, ad esempio, i controlli GridView, FormView e DetailsView, verificano automaticamente la riuscita dei controlli di convalida prima di effettuare un aggiornamento.

Casi in cui viene eseguita la convalida

Grazie ai controlli di convalida è possibile eseguire la verifica dell'input nel codice sul lato server. Quando l'utente invia una pagina al server, i controlli di convalida vengono richiamati per verificare i dati immessi dall'utente per ogni controllo. Se viene rilevato un errore di convalida in uno qualsiasi dei controlli di input, la pagina stessa verrà impostata su uno stato non valido, per poterne verificare la validità prima dell'esecuzione del codice. La convalida viene eseguita dopo l'inizializzazione della pagina, ovvero dopo l'elaborazione dello stato di visualizzazione e dei dati di postback, ma prima della chiamata dei gestori degli eventi Change o Click.

Se l'utente utilizza un browser che supporta ECMAScript (Javascript), la convalida verrà anch'essa eseguita dai controlli di convalida utilizzando lo script client. L'operazione può ridurre i tempi di risposta della pagina poiché gli errori vengono rilevati immediatamente e i messaggi di errore vengono visualizzati non appena l'utente esce dal controllo. Se è disponibile la convalida lato client, si avrà un maggiore controllo sul layout dei messaggi di errore e sarà possibile visualizzare un riepilogo degli errori nella finestra di messaggio. Per ulteriori informazioni, vedere Convalida lato client per i controlli ASP.NET lato server.

La convalida sul server viene eseguita da ASP.NET anche se è già stata eseguita sul client dai relativi controlli; in questo modo, è possibile verificare la validità sui gestori eventi basati sul server. Inoltre, una nuova esecuzione del testing sul server evita che gli utenti possano ignorare la convalida disattivando o modificando il controllo dello script client.

È possibile richiamare la convalida nel codice effettuando una chiamata al metodo Validate del controllo di convalida. Per ulteriori informazioni, vedere Procedura: convalidare i controlli server ASP.NET a livello di codice.

Convalida di più condizioni

Di norma, ciascun controllo di convalida esegue un test. Tuttavia, può accadere che si desideri verificare più condizioni. Ad esempio, potrebbe essere necessario stabilire sia che una voce utente è obbligatoria, sia che in tale voce è possibile immettere solo date comprese in un intervallo specifico.

È possibile connettere più di un controllo di convalida a un controllo di input in una pagina. In questo caso, i test eseguiti dai controlli vengono risolti utilizzando un operatore logico AND, il che significa che i dati immessi dall'utente devono superare tutti i test per poter essere considerati validi.

In alcuni casi, possono essere considerate valide voci immesse in numerosi formati diversi. Se, ad esempio, si richiede un numero di telefono, è possibile consentire agli utenti l'immissione di un numero per una chiamata locale, interurbana o internazionale. L'utilizzo di più controlli di convalida non funzionerebbe in questa istanza, in quanto i dati immessi dall'utente devono superare tutti i test per essere validi. Per eseguire questo tipo di test, ovvero un'operazione logica OR dove è necessario superare solo un test, utilizzare il controllo di convalida RegularExpressionValidator e specificare più percorsi validi all'interno del controllo. In alternativa, è possibile utilizzare il controllo di convalida CustomValidator e scrivere il codice di convalida personalizzato.

Visualizzazione delle informazioni sugli errori

Di norma, i controlli di convalida non sono visibili nella pagina di cui è stato eseguito il rendering. Tuttavia, se il controllo rileva un errore, viene visualizzato il testo di un messaggio di errore specificato dall'utente. È possibile visualizzare il messaggio di errore in diversi modi, come descritto nella tabella seguente.

Metodo di visualizzazione

Descrizione

Inline

Ciascun controllo di convalida è in grado di visualizzare individualmente un messaggio di errore, generalmente accanto al controllo dove si è verificato l'errore.

Summary

Gli errori di convalida possono essere raccolti e visualizzati in un'unica posizione, ad esempio nella parte superiore della pagina. Questo tipo di approccio viene spesso utilizzato in combinazione con la visualizzazione di un messaggio accanto ai campi di input con errori. Se l'utente utilizza Internet Explorer versione 4.0 o successive, il riepilogo può essere visualizzato in una finestra di messaggio.

Se si utilizzano i gruppi di convalida, per ciascun gruppo separato è necessario un controllo ValidationSummary.

In place e Summary

Il messaggio di errore può essere visualizzato in modo diverso nel riepilogo e sul posto. Questa opzione consente di visualizzare un messaggio di errore più breve sul posto con maggiori dettagli nel riepilogo.

Custom

È possibile personalizzare la visualizzazione del messaggio di errore, intercettando le informazioni relative agli errori e progettando l'output desiderato.

Se si utilizzano le opzioni di visualizzazione In place o Summary, è possibile formattare il testo del messaggio di errore utilizzando l'HTML.

Nota sulla sicurezza:

Se si creano messaggi di errore personalizzati, accertarsi di non includervi informazioni che possano essere utilizzate da un utente intenzionato a violare l'applicazione. Per ulteriori informazioni, vedere Procedura: visualizzare messaggi di errore protetti.

Modello di oggetti di convalida

È possibile interagire con i controlli di convalida utilizzando il modello di oggetti esposto dai singoli controlli di convalida e dalla pagina. Ogni controllo di convalida espone la proprietà IsValid, di cui è possibile eseguire il test per verificare se il test di convalida per quel controllo è stato superato o meno. La pagina espone anche una proprietà IsValid, in cui è riepilogato lo stato IsValid di tutti i controlli di convalida nella pagina. Questa proprietà consente di eseguire un singolo test per verificare se è possibile eseguire l'elaborazione personalizzata.

La pagina espone inoltre un insieme Validators che contiene un elenco di tutti i controlli di convalida nella pagina. È possibile scorrere in ciclo l'insieme per esaminare lo stato dei singoli controlli di convalida.

Nota:

Il modello di oggetti per la convalida lato client presenta alcune differenze. Per ulteriori informazioni, vedere Convalida lato client per i controlli ASP.NET lato server.

Personalizzazione della convalida

È possibile personalizzare il processo di convalida nei seguenti modi:

  • È possibile specificare il formato, il testo e il percorso dei messaggi di errore. Inoltre, è possibile specificare se visualizzare i messaggi di errore singolarmente o sotto forma di riepilogo.

  • Utilizzando il controllo CustomValidator è possibile creare una convalida personalizzata. Il controllo chiama la logica personalizzata ma agisce peraltro come qualsiasi altro controllo di convalida nell'impostazione dello stato dell'errore, nella visualizzazione dei messaggi di errore e così via. In questo modo, viene fornito un semplice strumento per la creazione di una logica di convalida personalizzata, utilizzata comunque nel framework di convalida della pagina.

  • Per la convalida lato client, è possibile intercettare la chiamata di convalida e sostituire o aggiungere la logica di convalida personalizzata.

Vedere anche

Altre risorse

Convalida dei controlli ASP.NET