Share via


Risultati di convalida di casi particolari per i controlli ASP.NET lato server

Aggiornamento: novembre 2007

Grazie alla convalida si assicura che i dati immessi dall'utente soddisfino i criteri specificati. Nella maggior parte dei casi, si tratta di un'operazione immediata. Tuttavia, può accadere che, in alcune situazioni in cui l'input dell'utente viene convalidato, vengano introdotte delle condizioni speciali. È importante comprendere tali condizioni, come viene eseguita la convalida e gli eventuali risultati di un tentativo di convalida.

Confronto con campi vuoti

In tutti i controlli di convalida, fatta eccezione per il controllo RequiredFieldValidator, un campo viene considerato valido se è vuoto. È necessario utilizzare il controllo RequiredFieldValidator per evitare che un campo sia lasciato vuoto dall'utente. Se, ad esempio, si collega un controllo RangeValidator a un campo data, la convalida viene effettuata se l'utente inserisce una data nell'intervallo specificato o se lascia vuoto il campo. Per garantire l'inserimento della data da parte dell'utente, è necessario aggiungere un controllo RequiredFieldValidator al campo data insieme alla verifica dell'intervallo.

Confronto con un altro controllo

Il controllo CompareValidator consente di specificare che la convalida venga eseguita in base al valore di un altro controllo. Si può disporre ad esempio di due campi per l'immissione delle date, una data iniziale e una finale. Il controllo CompareValidator consente di fare in modo che la data iniziale sia precedente o contemporanea alla data finale.

Nota sulla sicurezza:

L'input dell'utente in una pagina Web ASP.NET può includere script client potenzialmente dannoso. Per impostazione predefinita, l'input viene verificato allo scopo di accertarsi che non includa script o elementi HTML. Per ulteriori informazioni, vedere Cenni preliminari sugli attacchi tramite script.

Se i controlli di convalida non sono in grado di risolvere il valore nell'altro controllo, non verrà generato alcun errore e il controllo di convalida verrà superato. Questo avviene se il valore nell'altro controllo non è presente o non può essere convertito nel tipo di dati del controllo CompareValidator.

I test specifici eseguiti da questi controlli e i risultati possibili sono:

  • Se il controllo di destinazione inserito nella proprietà ControlToValidate del controllo di origine non dispone di un valore, la proprietà IsValid viene considerata true e la convalida riesce.

  • Se non è possibile convertire il valore del controllo di destinazione nella proprietà ControlToValidate nel tipo di dati corretto, IsValid viene considerata false.

  • Se non è possibile convertire il valore del controllo di destinazione nella proprietà ControlToCompare nel tipo di dati corretto, IsValid viene considerata true.

  • Infine, se tutti i controlli menzionati sopra riescono, entrambi i controlli sono non vuoti e possono essere convertiti nel tipo di dati; quindi, il controllo esegue effettivamente il confronto e imposta IsValid in modo corretto.

Grazie a questa strategia è possibile evitare che vengano segnalati più errori per la stessa voce non valida. I controlli di convalida consentono di eseguire il test e segnalare un unico valore, visualizzando un messaggio quanto più preciso possibile quando si verifica un errore.

Nell'esempio relativo alla data finale, ad esempio, se l'utente immette una data iniziale non valida, quindi una data finale, al momento dell'esecuzione del controllo di convalida (generalmente sul server), la stessa data non esatta potrebbe potenzialmente generare un errore sia per la data iniziale sia per la data finale. Per impedire che ciò accada, la convalida della data finale, che dipende da un altro campo, non genera un errore.

È quindi necessario garantire che venga fornita una convalida sufficiente per ogni singolo campo. Nell'esempio, sarà necessario assicurarsi che l'utente immetta una data corretta nel campo della data iniziale. In molti casi, è opportuno includere un controllo RequiredFieldValidator oltre al controllo di convalida che esegue il test del contenuto di una voce specifica. In alcuni casi, inoltre, risulta utile aggiungere un controllo CompareValidator con la relativa proprietà Operator impostata su DataTypeCheck, che esegue un semplice controllo del tipo senza effettuare confronti con un altro valore o controllo.

Vedere anche

Concetti

Tipi di convalida per i controlli ASP.NET lato server

Altre risorse

Convalida dei controlli ASP.NET