Utilizzare un Custom Validator Control per validazioni complesse

di Daniele Bochicchio, in ASP.NET, Validator Controls, VB.NET,

I validator controls di ASP.NET sono molto flessibili e molto potenti, ma le funzionalità di quelli di base sono limitate ai casi più frequenti: campo obbligatorio, regular expression, tipo di input.
Ci sono tuttavia casi in cui il controllo che si deve fare è un po' più complesso, perchè magari richiede la verifica dell'input inserito.
In un caso simile, è possibile utilizzare un Custom Validator Control e demandare la verifica ad un codice particolare, magari più complesso.
Nell'esempio viene eseguito solo codice lato-server, ma è possibile fare una pre-verifica (senza PostBack) impostando nella proprietà ClientvalidatorFunction del controllo la Function client-side da invocare.
Tornando all'esempio, verificheremo che la data inserita appartenga ad un anno bisestile.
Nell'evento invocato durante la verifica viene passato un oggetto ServerValidateEventArgs che contiene il riferimento alla validazione stessa.
Per far passare la validazione, basta impostarne la relativa proprietà IsValid su true.

<SCRIPT Language="VB" runat="server">

' controlla il submit della form
Sub FormBtn_OnClick(sender as object, e as EventArgs)
  If Page.IsValid Then
  lblRisultato.Text = "La data fa parte di un anno bisestile ed è: " & Convert.ToDateTime(DataDaVerificare.Text).ToLongDateString
 else
  lblRisultato.Text = Nothing
 End If
End Sub

' controlla (server-side) la validità della data
Sub ControllaData (source as object, arguments as ServerValidateEventArgs)
 ' verifica che sia una data
 try
  ' verifica che sia un anno bisestile
  arguments.IsValid = DateTime.IsLeapYear(DateTime.Parse(arguments.Value).Year)
 catch
  arguments.IsValid = false
 end try
End Sub

</SCRIPT>
<asp:label id="lblRisultato" runat="server" />
<form runat="server">Inserisci una data di un anno bisestile:
<asp:textbox id="DataDaVerificare" runat="server" />
<asp:CustomValidator id="Data_Validator"
 ControlToValidate="DataDaVerificare"
 OnServerValidate="ControllaData"
 ErrorMessage="formato data non corretto/anno non bisestile"
runat="server"/>
<asp:Button Text="Continua" OnClick="FormBtn_OnClick" runat="server"/>
</form>

Un Custom Validator può essere molto utile, ad esempio, per verificare la validità di una partita IVA, di un codice prodotto o comunque di campi che non hanno un formato ben definito.

Per approfondimenti sui Validator Controls, è possibile leggere:
https://www.aspitalia.com/articoli/aspplus/validatorcontrols.aspx

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi