Procedura: convalidare i controlli server ASP.NET a livello di codice
Aggiornamento: novembre 2007
Per impostazione predefinita, i controlli di convalida ASP.NET eseguono la convalida in modo automatico quando viene eseguito il postback della pagina al server, dopo l'inizializzazione (ovvero dopo l'elaborazione dello stato di visualizzazione e dei dati di postback) e prima che venga chiamato il codice di gestione degli eventi. La convalida può essere inoltre eseguita nel browser, se questo supporta lo script client.
In alcuni casi, tuttavia, potrebbe essere necessario eseguirla a livello di codice. È opportuno eseguire la convalida a livello di programmazione nelle circostanze che seguono:
Sei i valori di convalida vengono impostati solo in fase di esecuzione. Se ad esempio si utilizza un controllo RangeValidator, è possibile che le relative proprietà MinimumValue e MaximumValue vengano impostate in fase di esecuzione in base ai valori immessi dall'utente. In questo caso, la convalida predefinita non è adatta in quanto nel momento in cui nella pagina vengono chiamati i controlli di convalida per l'esecuzione della convalida, il controllo RangeValidator non contiene informazioni sufficienti.
Per stabilire la validità di un controllo, o dell'intera pagina, nel gestore eventi Page_Load. In questa fase dell'elaborazione di pagina, i controlli di convalida non sono stati ancora richiamati, quindi la proprietà IsValid della pagina o dei singoli controlli non è impostata. Se si tenta di ottenere il valore della proprietà, verrà generata un'eccezione. Tuttavia, per stabilirne la validità, è possibile chiamare la convalida a livello di codice.
Per aggiungere controlli, sia di input sia di convalida, in fase di esecuzione.
Più in generale, è possibile eseguire la convalida in fase di programmazione quando si desidera avere un controllo preciso sulla convalida che viene eseguita.
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. Se è stata disattivata questa funzionalità, sarà comunque possibile chiamare il metodo ValidateInput. Per ulteriori informazioni, vedere Cenni preliminari sugli attacchi tramite script. |
Per eseguire la convalida a livello di programmazione
Chiamare il metodo Validate del controllo di convalida.
Il controllo eseguirà la verifica e imposterà la proprietà IsValid del controllo e della pagina. In caso di rilevamento di errori, al momento della restituzione della pagina all'utente verranno visualizzati messaggi di errore come di consueto.
Nell'esempio di codice seguente viene illustrato come impostare le proprietà a livello di codice. In questo caso, una pagina Web ASP.NET consente di effettuare prenotazioni presso una struttura turistica che prevede una gita gratuita per ogni soggiorno. Gli utenti devono immettere una data di arrivo e una data di partenza e quindi programmare la gita durante il loro soggiorno. Per assicurarsi che l'utente abbia inserito un formato di data normale e che la data della gita sia compresa tra la data di arrivo e la data di partenza, viene utilizzato un controllo RangeValidator.
Nota: Se un utente immette un valore che non è possibile convertire in una data, il controllo di convalida genererà un'eccezione. Per semplificare, nell'esempio non è compresa la gestione degli errori.
Le date di arrivo e di partenza derivano da due controlli server Web TextBox sulla pagina, txtArrival e txtDeparture. La data della gita viene immessa in un terzo controllo TextBox, denominato txtTourDate, che viene convalidato dal controllo RangeValidator.
Nota: Durante la convalida a livello di programmazione, è opportuno disattivare lo script client, in modo che nel controllo non venga visualizzato il messaggio di errore errato prima dell'esecuzione del codice di convalida lato server. Per informazioni dettagliate, vedere Procedura: disattivare la convalida per i controlli server ASP.NET.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click RangeValidator1.MinimumValue = txtArrival.Text RangeValidator1.MaximumValue = txtDeparture.Text RangeValidator1.Type = ValidationDataType.Date RangeValidator1.Validate() If Not RangeValidator1.IsValid Then RangeValidator1.ErrorMessage = "The tour date must " & _ "fall between the arrival and departure dates." End If End Sub
private void Button1_Click(object sender, System.EventArgs e) { RangeValidator1.MinimumValue = txtArrival.Text; RangeValidator1.MaximumValue = txtDeparture.Text; RangeValidator1.Type = ValidationDataType.Date; RangeValidator1.Validate(); if (!RangeValidator1.IsValid) { RangeValidator1.ErrorMessage = "The tour date must " + "fall between the arrival and departure dates."; } }
Vedere anche
Concetti
Tipi di convalida per i controlli ASP.NET lato server