![]() |
|
I Validation Controls di Asp.NET
Quando viene realizzato un Web Forms, per lo sviluppatore risulta estremamente semplice ed immediato capire quali valori possono essere inseriti in ogni singolo campo ma, spesse volte, il comportamento degli "utilizzatori finali" è differente; si rivela quindi molto importante prevedere tutti i possibili errori che possono essere generati durante la compilazione dei campi; ASP.NET aiuta a gestire questi eventi attraverso i Validation Controls.
Per verificare la validità dei valori inseriti nei campi presenti nel Form, basterà semplicemente inserire uno o più Validation Control <asp:TipoControlValidator ...> </asp:TipoFieldValidator>per ogni Campo che si desidera controllare. Per gestire un Validation Control sono disponibili le seguenti proprietà principali:
ed altre proprietà specifiche o appartenenti a determinati Validation Controls:
La differenza tra la proprietà Text e la proprietà ErrorMessage è che Text viene utilizzata per visualizzare il messaggio di errore accanto al controllo, ErrorMessage viene invece utilizzata per visualizzare il messaggio di errore nel Validation Summary (elenco degli errori di validazione del Form); nel caso in cui non sia stata impostata la proprietà Text, verrà visualizzato il messaggio presente in ErrorMessage. Required Field Validation Control Attraverso questo controllo è possibile rendere obbligatorio (diverso da blank) un determinato campo:
<script language="C#" runat="server">
void HiBtn_Click(Object Src, EventArgs E)
{
lblCiao.Text = "Ciao " + txtNome.Text + ", benvenuto nel mondo .NET!";
}
</script>
<html>
<head>
<title>Esempio sui Validation Controls</title>
</head>
<body>
<form runat="server">
Inserire il Nome: <asp:textbox id="txtNome" runat="server" />
<asp:button text="Invia" Onclick="HiBtn_Click" runat="server" />
<asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server"
ControlToValidate="txtNome"
ErrorMessage="(*) Errore... Il campo NOME è un campo obbligatorio!"
ForeColor="Red">
</asp:RequiredFieldValidator>
<br><br>
<b><asp:Label id="lblCiao" runat="server" /></b>
</form>
</body>
</html>
Come è facile intuire, il controllo "Required Field Validator" viene spesso associato ad altri Validation Controls, in questo modo è possibile controllare sia il fatto che il campo non può essere vuoto (Required Field Validator) sia altre condizioni.Range Validation Control Il Range Validator consente di verificare che il valore inserito sia compreso fra due valori specificati (quindi del tipo da ... a ...); per ottenere questo risultato basterà utilizzare le proprietà MaximunValue e MinimunValue, in aggiunta alla proprietà Type che consente di specificare il tipo (dataype) del valore da gestire.
<script language="C#" runat="server">
void Btn_Click(Object Src, EventArgs E)
{
lblConfronto.Text = "Il numero inserito è compreso tra 1 e 10!";
}
</script>
<html>
<head>
<title>Esempio sui Validation Controls</title>
</head>
<body>
<form runat="server">
Inserire un numero tra 1 e 10: <asp:textbox id="txtNumero" runat="server" /><br>
<asp:RangeValidator id="RangeFieldValidator1" runat="server"
ControlToValidate="txtNumero"
MinimumValue="1"
MaximumValue="10"
Type="Integer"
ErrorMessage="(*) Errore... Il numero deve essere compreso tra 1 e 10!"
ForeColor="Red" >
</asp:RangeValidator>
<br><br>
<asp:button text="Enter" Onclick="Btn_Click" runat="server" />
<br><br>
<b><asp:Label id="lblConfronto" runat="server" /></b>
</form>
</body>
</html>
Compare Validation ControlQuesto controllo presenta diversi ambiti di applicazione, consente di verificare:
Controllo sul tipo (datatype) di un campo:
<script language="C#" runat="server">
void Btn_Click(Object Src, EventArgs E)
{
lblCiao.Text = "Hai " + txtAnni.Text + " anni !";
}
</script>
<html>
<head>
<title>Esempio sui Validation Controls</title>
</head>
<body>
<form runat="server">
Inserire l'età: <asp:textbox id="txtAnni" runat="server" />
<asp:CompareValidator id="CompareFieldValidator1" runat="server"
ControlToValidate="txtAnni"
Type="Integer"
Operator="DataTypeCheck"
ErrorMessage="(*) Errore... Inserire un numero!"
ForeColor="Red" >
</asp:CompareValidator >
<br><br>
<asp:button text="Enter" Onclick="Btn_Click" runat="server" />
<br><br>
<b><asp:Label id="lblCiao" runat="server" /></b>
</form>
</body>
</html>
Confronto tra due campi:
<script language="C#" runat="server">
void Btn_Click(Object Src, EventArgs E)
{
lblConfronto.Text = "Confronto eseguito con successo!";
}
</script>
<html>
<head>
<title>Esempio sui Validation Controls</title>
</head>
<body>
<form runat="server">
Inserire l'indirizzo Email: <asp:textbox id="txtEmail" runat="server" /><br>
Re-inserire l'indirizzo Email: <asp:textbox id="txtEmail1" runat="server" />
<asp:CompareValidator id="CompareFieldValidator1" runat="server"
ControlToValidate="txtEmail1"
ControlToCompare="txtEmail"
Type="String"
Operator="Equal"
ErrorMessage="(*) Errore... Controllare l'indirizzo Email inserito!"
ForeColor="Red" >
</asp:CompareValidator>
<br><br>
<asp:button text="Enter" Onclick="Btn_Click" runat="server" />
<br><br>
<b><asp:Label id="lblConfronto" runat="server" /></b>
</form>
</body>
</html>
Confronto fra un campo ed un valore fisso:
<script language="C#" runat="server">
void Btn_Click(Object Src, EventArgs E)
{
lblData.Text = "Hai inserito una data successiva al 01/01/2004!";
}
</script>
<html>
<head>
<title>Esempio sui Validation Controls</title>
</head>
<body>
<form runat="server">
Inserire una Data: <asp:textbox id="txtData" runat="server" /><br>
<asp:CompareValidator id="CompareFieldValidator1" runat="server"
ControlToValidate="txtData"
ValueToCompare="01/01/2004"
Operator="GreaterThan"
Type="Date"
ErrorMessage="(*) Errore... La data deve essere successiva al 01/01/2004!"
ForeColor="Red">
</asp:CompareValidator>
<br><br>
<asp:button text="Enter" Onclick="Btn_Click" runat="server" />
<br><br>
<b><asp:Label id="lblData" runat="server" /></b>
</form>
</body>
</html>
Regular Expression Validation ControlQuando è necessario convalidare dei tipi di testo particolarmente complessi (che contengono dei simboli speciali) è possibile utilizzare il controllo "Regular Expression"; attraverso la proprietà ValidationExpression è possibile impostare l'espressione regolare da convalidare.
<script language="C#" runat="server">
void Btn_Click(Object Src, EventArgs E)
{
lblTesto.Text = "Espressione regolare!";
}
</script>
<html>
<head>
<title>Esempio sui Validation Controls</title>
</head>
<body>
<form runat="server">
Indirizzo Email: <asp:textbox id="txtTesto" runat="server" /><br>
<asp:RegularExpressionValidator id="RegularExpressionFieldValidator1" runat="server"
ControlToValidate="txtTesto"
ValidationExoression="^[w-.]+@([w-]+.)+[w-]{2,3}$"
Operator="GreaterThan"
ErrorMessage="(*) Errore ... indirizzo Email non valido!"
ForeColor="Red">
</asp:RegularExpressionValidator>
<br><br>
<asp:button text="Enter" Onclick="Btn_Click" runat="server" />
<br><br>
<b><asp:Label id="lblTesto" runat="server" /></b><br>
</form>
</body>
</html>
Cerchiamo di capire meglio come interpretare le Regular Expression analizzando la simbologia utilizzata. Prendiamo come esempio l'espressione corretta relativa ad un indirizzo Email:
"^[w-.]+@([w-]+.)+[w-]{2,3}$"
Nella rappresentazione di un'espressione, alcuni simboli speciali sono preceduti dal carattere "", questo evita di generare ambiguità... ma vediamo nel dettaglio la simbologia:
L'espressione per la rappresentazione corretta di un numero telefonico è la seguente: "^d{4}-d$"
Per maggiori dettagli sull'utilizzo delle espressioni nei controlli Regular Expression cliccare qui. Custom Validation Control Quando il tipo di convalida da effettuare è troppo complessa ed i controlli precostituiti non riescono a soddisfarre le necessità richieste è possibile creare un controllo personalizzato "Custom Validator". Il controllo utilizza sempre una validazione lato Server, ma è possibile anche utilizzare una validazione lato Client (per i browser che supportano DHTML); la gestione lato Client consente di controllare il valore del campo prima che le informazioni vengano inviate al Server, evitando quindi di aumentare il lavoro del Server. Esempio di CustomValidator:
<asp:CustomValidator id="accessID"
ControlToValidate="ID del campo da controllare"
ClientValidationFunction="FunzioneClient"
onServerValidate="FunzioneServer"
ErrorMessage="(*) Errore ... Messaggio di errore!"
Text="(*) Errore ... Messaggio di errore!"
ForeColor="Colore"
runat="server" />
</asp:CustomValidator>
Il controllo utilizza due proprietà, ClientValidationFunction e OnServerValidate, che contengono il nome delle funzioni utilizzate per convalidare il valore. La funzione ClientValidationFunction, solitamente è scritta in JavaScript, mentre la funzione OnServerValidate è scritta con i linguaggi gestibili dal Framework .NET (VB.NET, C#, J# ...)La funzione lato Server riceve in ingresso un riferimento al comando di convalida e l'oggetto ServerValidateEventArgs che consente di recuperare il valore del campo utilizzando la proprietà Value, il risultato del controllo viene salvato nella proprietà IsValid (sempre dell'oggetto ServerValidateEventArgs).
Sub ServerValidate(objSource As Object, objArgs As ServerValidaEventArgs)
' Viene effettuato un controllo che restituisce un blnValid (True/False)
Dim blnValid As Boolean = True
Try
Dim intNumber As Integer = objArgs.Value
' Codice di controllo
blnValid = True
Catch objError As Exception
blnValid = False
Finally
objArgs.IsValid = blnValid
End Try
End Sub
La funzione lato Client riceve in ingresso un riferimento a se stessa objSource ed un oggetto contenente gli argomenti per la chiamata di funzione objArgs.E' importante ricordare che, prima di creare una funzione di validazione lato Client, è necessario aver creato la corrispondente funzione lato Server (descritta precedentemente), questo consnete di evitare che delle procedure esterne possano accedere a risorse protette.
<script language="javascript">
<!--
funtion ClientValidate(objSource, objArgs)
{
if ( ... ) // Controllo che restituisce un blnValid (True/False)
{
var blnValid = true;
var intNumber = objArgs.Value;
if ( ... ) // Condizione
{
// Codice di controllo
blnValid = false;
break;
}
else
{
blnValid = false;
}
else
{
blnValid = false;
objArgs.IsValid = blnValid;
}
}
//-->
</script>
E' possibile utilizzare un Validation Control senza impostare la propietà ControlToValidate, questa soluzione viene adottata quando è necessario validare controlli multipli o controlli ai quali non è possibile applicare nessun Validation Control (come ad esempio i CheckBox); in questo caso la proprietà Value delle funzioni lato Server e lato Client conterrà una stringa vuota (""). Nel caso appena illustrato, se non viene utilizzato il Validation Control per un campo CheckBox, è possibile utilizzare una funzione del tipo (lato Server):
void ServerValidation (object source, ServerValidateEventArgs args)
{
args.IsValid = (CheckBox1.Checked == true);
}
Validation SummaryIl Validation Summary consente di visualizzare tutti i campi non validi, elencando tutti gli ErrorMessage dei controlli che hanno generato errore. Le proprietà utilizzate sono:
E' possibile visualizzare l'elenco degli errori in due modi: in una determinata posizione della pagina, utilizzando ShowSummary="True":
<script language="C#" runat="server">
void HiBtn_Click(Object Src, EventArgs E)
{
lblCiao.Text = "Ciao " + txtNome.Text + ", benvenuto nel mondo .NET!";
}
</script>
<html>
<head>
<title>Esempio sui Validation Controls</title>
</head>
<body>
<form runat="server">
Inserire il Nome: <asp:textbox id="txtNome" runat="server" />
<asp:button text="Invia" Onclick="HiBtn_Click" runat="server" />
<asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server"
ControlToValidate="txtNome"
ErrorMessage="(*) Errore... Il campo NOME è un campo obbligatorio!"
ForeColor="Red">
</asp:RequiredFieldValidator>
<br><br>
<asp:ValidationSummary id="ValidationSummary1" runat="server"
HeaderText="<b> Si sono verificati i seguenti errori ... </b>"
ShowSummary="True"
DisplayMode="List"
ForeColor="Red">
</asp:ValidationSummary>
<br><br><b><asp:Label id="lblCiao" runat="server" /></b><br>
</form>
</body>
</html>
oppure in una finestra di Windows, utilizzando ShowMessageBox="True":
<script language="C#" runat="server">
void HiBtn_Click(Object Src, EventArgs E)
{
lblCiao.Text = "Ciao " + txtNome.Text + ", benvenuto nel mondo .NET!";
}
</script>
<html>
<head>
<title>Esempio sui Validation Controls</title>
</head>
<body>
<form runat="server">
Inserire il Nome: <asp:textbox id="txtNome" runat="server" />
<asp:button text="Invia" Onclick="HiBtn_Click" runat="server" />
<asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server"
ControlToValidate="txtNome"
ErrorMessage="(*) Errore... Il campo NOME è un campo obbligatorio!"
ForeColor="Red">
</asp:RequiredFieldValidator>
<asp:ValidationSummary id="ValidationSummary1" runat="server"
HeaderText="<b> Si sono verificati i seguenti errori ... </b>"
ShowSummary="false"
ShowMessageBox="True"
DisplayMode="List"
ForeColor="Red">
</asp:ValidationSummary>
<br><br><b><asp:Label id="lblCiao" runat="server" /></b><br/>
</form>
</body>
</html>
|
IN EVIDENZA
Effetto ombra su testo con Photoshop
Guadagna col tuo sito grazie a TradeD...
Guida XHTML
Riscrivere le URL con Asp
Riavviare IIS
HTTP 500 internal server error
Generare password casuali in Javascri...
Errore 80004005: Cannot update. Datab...
Introduzione ad Ajax ed Asp con Jscri...
Referenze dei Tag Html
Stringhe di connessione via ODBC e Ol...
Referenze dei fogli di stile Css
Le espressioni regolari in Javascript
|
||||
© 2001/2010 lukeonweb.net - A cura di Luca Ruggiero, Partita IVA 05564851219 -
Privacy |
Pubblicità |
Contatti
| |||||