Utilizzare i validator controls di ASP.NET

5 pagine in totale: <<Indietro 1 2 3 4 [5]

Controllo CustomValidator

Questo comando controlla che il valore inserito in una casella di input sia valido rispetto ad una funzione di convalida personalizzata creata dall'utente, per esempio una funzione per verificare se il numero immesso sia pari.

È possibile creare un comando di convalida personalizzato sia lato-server, sia lato-client; naturalmente il controllo lato-client richiede un browser compatibile DHTML. La convalida lato-client sarà sempre eseguita prima di quella lato-server.

Per creare una funzione di convalida lato-server è necessario settare nella proprietà OnServervalidator il nome della funzione di convalida. La stringa da convalidare viene letta dalla proprietà Value dell'oggetto ServerValidateEventArgs della funzione stessa. Il risultato della convalida va memorizzato nella proprietà IsValid dell'oggetto ServerValidateEventArgs.

Per creare una funzione di convalida lato-client è necessario settare nella proprietà ClientvalidatorFunction il nome della funzione di convalida.

Utilizzando JavaScript come linguaggio di programmazione la funzione utilizzerà la seguente sintassi:

Function validatorFunctionName (source, arguments)

Mentre nel caso di Vbscirpt:

Sub validatorFunctionName (source, arguments)

Come per la convalida lato-server, anche la convalida lato-client utilizzerà la proprietà Value del parametro arguments per leggere il valore da convalidare; il risultato della convalidà andrà memorizzato nella proprietà IsValid.

Per evitare che qualche malintenzionato cerchi di evitare la convalida lato-client, magari disabilitando gli script nel proprio browser, è sempre consigliato creare la stessa funzione anche sul lato-server.

Se il controllo input rimane vuoto nessuna funzione di convalidà verrà invocata e la convalida passerà il test. Per evitare questo tipo di problema è possibile associare allo stesso campo anche la convalida RequiredFieldValidator.

Ecco un esempio:

<html>
<head>
  <script runat="server">
   Sub ValidateBtn_OnClick(sender As object, e As EventArgs)
   If Page.IsValid Then
     lblOutput.Text = "OK il numero inserito è dispari"
   Else
     lblOutput.Text = "Attenzione: il numero inserito non è dispari"
   End If
   End Sub
   Sub Servervalidator (source As object, arguments As ServerValidateEventArgs)

   Dim num As Integer = Integer.Parse(arguments.Value)
   arguments.IsValid = ((num mod 2) <> 0)

   End Sub
  </script>

  <script language="javascript">
  <!--
  function ClientValidate(source, arguments)
  {
   if ((arguments.Value % 2) != 0)
   arguments.IsValid=true;
   else
   arguments.IsValid=false;
  }
  // -->
</script>

</head>
<body>
  <form runat="server">
   <h3>CustomValidator</h3>
   <asp:Label id=lblOutput runat="server"
     Text="Inserisci un numero dispari:" />
   <asp:TextBox id="Text1" runat="server" />

   <asp:RequiredFieldValidator id="RequiredFieldValidator1" 
     ControlToValidate="Text1"
     Text="il campo non può essere vuoto!"
      Display="Dynamic"
     runat="server"/>

     <asp:CustomValidator id="CustomValidator1"
     ControlToValidate="Text1"
     ClientvalidatorFunction="ClientValidate"
     OnServerValidate="Servervalidator"
     ErrorMessage="Attenzione: il numero non è dispari"
     runat="server"/>

   <p>
   <asp:Button id="Button1"
     Text="Convalida"
     OnClick="ValidateBtn_OnClick"
     runat="server"/>
  </form>

</body>
</html>

Controllo ValidationSummary

Questo comando è utilizzato per visualizzar l'elenco degli errori riscontrati da tutti i validator controls. Il sommario degli errori può essere visualizzato in diversi modi: elenco, punto elenco o paragrafo, a seconda del modo in cui viene impostata la proprietà DisplayMode; il comando visualizzerà il testo contenuto nella proprietà ErrorMessage di ogni comando che non supera il test di convalida.

Un'altra proprietà utile di questo comando è ShowMessageBox che, se impostata su True, visualizza un finestra di dialogo alert sul client con il sommario degli errori.

Ecco un esempio:

<html>
<head></head>
<body>

  <h3>ValidationSummary</h3>
  <p>

  <form runat="server">

  <table cellpadding="10">
  <tr>
  <td>

  <table cellpadding="10">

   <tr>    <td align="right">
   Seleziona un opzione:
   </td>
   <td>

   <asp:RadioButtonList id="RadioButtonList1"
   RepeatLayout="Flow"
   runat=server>
   <asp:ListItem>Opzione 1</asp:ListItem>
   <asp:ListItem>Opzione 2</asp:ListItem>
   </asp:RadioButtonList>

   </td>

   <td align="middle" rowspan="1">

   <asp:RequiredFieldValidator
   id="RequiredFieldValidator1"
   ControlToValidate="RadioButtonList1"
   ErrorMessage="Nessuna opzione selezionata."
   Display="Static"
   InitialValue=""
   Width="100%"
   Text="* !!! *"
   runat="server"/>

   </td>
   </tr>

   <tr>
   <td align="right">

   Inserisci un testo:
   </td>

   <td>
   <asp:TextBox id="TextBox1"
   runat="server" />
   </td>

   <td>
   <asp:RequiredFieldValidator
   id="RequiredFieldValidator2"
   ControlToValidate="TextBox1"
   ErrorMessage="Nessun testo inserito."
   Display="Static"
   Width="100%"
   Text="* !!! *"
   runat=server/>
   </td>
   </tr>

   <tr>
   <td></td>
   <td>
   <asp:Button id="Button1"
   Text="Convalida"
   runat=server />
   </td>
   <td></td>
   </tr>
  </table>

  </td>
  <td>
  <table cellpadding="20">
   <tr>
   <td>

   <asp:ValidationSummary id="valSum"
   DisplayMode="BulletList"
   EnableClientScript="true"
   HeaderText="Errori riscontrati:"
   runat="server"/>
   </td>
   </tr>
  </table>

  </td>
  </tr>
  </table>

  </form>

</body>
</html>

Conclusioni

In questo articolo abbiamo visto come utilizzare i validator controls di ASP.NET, controlli molto utili per evitare di scrivere tutto il codice di controllo di convalida sia lato-server che lato-client.

L'espandibilità di questo comandi inoltre è garantita dal comando CustomValidator che permette di inserire una convalida personalizzata.

Insomma che dire, largo alla fantasia...

5 pagine in totale: <<Indietro 1 2 3 4 [5]

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC