The Dark Side of .NET Programming

Il blog di Michele Aponte
posts - 212, comments - 145, trackbacks - 16

Asp.Net: Validatori e Page.IsValid

Una delle cose che rendono altissima la produttività di Asp.Net Web Forms è sicuramente la possibilità di usare i validatori, che in maniera rapida e indolore permettono di evitare il post di un form quando ci sono campi che non rispettano le nostre regole di validazione. Semplicemente trascinando un validatore sul form e impostando il controllo da validare vengono generati per noi i controlli javascript necessari alle nostre esigenze più comuni.

Chi mi conosce sa che odio usare il designer e preferisco sempre scrivere le pagine aspx in modalità source, quindi una prima cosa interessante mostrata anche dal nostro buon Alessandro durante un live meeting di DotNetCampania è la possibilità di farci aiutare a inserire il validatore. Digitando ad esempio la stringa requiredfieldvalidator subito dopo il controllo che vogliamo validare e a cui abbiamo dato un identificativo…

   1: <form id="form1" runat="server">
   2: <div>
   3:     <asp:TextBox runat="server" ID="MyTextBox" />
   4:     requiredfieldvalidator
   5: </div>
   6: </form>

… premendo il tasto TAB otteniamo, per la mia e spero la vostra gioia, il codice dell’elemento <asp:RequiredFieldValidator> con l’attributo ControlToValidate già impostato e il cursone posizionato sul testo selezionato del messaggio di errore da mostrare:

   1: <form id="form1" runat="server">
   2: <div>
   3:     <asp:TextBox runat="server" ID="MyTextBox" />
   4:     <asp:RequiredFieldValidator ErrorMessage="errormessage" ControlToValidate="MyTextBox"
   5:         runat="server" />
   6: </div>
   7: </form>

Completando il nostro form in modo che semplicemente modifichi il testo di una label con quello inserito nella textbox alla pressione di un pulsante, possiamo andare a implementare questa difficilissima logica business nell’handler del pulsante:

   1: <form id="form1" runat="server">
   2: <div>
   3:     <asp:TextBox runat="server" ID="MyTextBox" /><asp:RequiredFieldValidator ErrorMessage="Obbligatorio!"
   4:         ControlToValidate="MyTextBox" runat="server" />
   5:     <br />
   6:     <asp:Button ID="MyButton" Text="Invia" runat="server" 
   7:         onclick="MyButton_Click" /><asp:Label
   8:             ID="MyLabel" Text="text" runat="server" />
   9: </div>
  10: </form>
   1: protected void MyButton_Click(object sender, EventArgs e)
   2: {
   3:     this.MyLabel.Text = this.MyTextBox.Text;
   4: }

Tutto bene se non fosse per il fatto che purtroppo esistono scenari in cui javascript è disabilitato (spesso per le famose irragionevoli ragioni dei sistemisti delle intranet…), il che farebbe miseramente fallire la nostra logica di validazione. Purtroppo non c’è modo di evitare il post ma possiamo fare in modo che la logica di validazione imposta coni validatori continui a fare i suo dovere lato server con un semplice if sulla proprietà Page.IsValid:

   1: protected void MyButton_Click(object sender, EventArgs e)
   2: {
   3:     if (Page.IsValid)
   4:     {
   5:         this.MyLabel.Text = this.MyTextBox.Text;
   6:     }
   7: }

E questo era per la serie: “lo so che per la maggior parte di voi è una banalità ma hai visto mai che qualcuno non lo sa…”

-- Michele

Print | posted on mercoledì 1 settembre 2010 01:05 |

Feedback

Gravatar

# re: Asp.Net: Validatori e Page.IsValid

L'esempio descritto l'ho provato e funziona senza invocare Page.Validate()
01/09/2010 05:10 | Michele
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET