ASP.NET Usare i validator: CustomValidator
Link sponsorizzati
Per finire la serie di articoli sui validator di ASP.NET cominciata la settimana scorsa, parlo del CustomValidator. Questo validator, come si intuisce dal nome è personalizzabile. Praticamente è possibile definire le funzioni lato server e lato client da far eseguire al controllo per validare il form.
<asp:textbox ID="TextBox1" runat="server"></asp:textbox>
<asp:customvalidator ID="CustomValidator1" runat="server" ErrorMessage="Inserisci un numero primo"
Text="*" ClientValidationFunction="isPrime" OnServerValidate="isPrime"
ControlToValidate="TextBox1" ValidationGroup="uno"></asp:customvalidator>
<asp:button ID="Button1" runat="server" Text="Button" CausesValidation="true" ValidationGroup="uno" />
<asp:validationsummary ID="ValidationSummary1" runat="server" ValidationGroup="uno" />
</form>
Gli attributi importanti in questo caso sono ClientValidationFunction e OnServerValidate. Questi due attributi accettano il nome di una funzione, la prima definita in JavaScript la seconda nel codice della pagina ASP.NET che viene scritta in C# o Visual Basic .NET (a seconda di quello che usate come linguaggio).
Link sponsorizzati
In questo caso io ho definito una funzione che controlla se il numero inserito è primo o meno.
Questo il codice javascript
{
var num = args.Value;
var enter = false;
for(i=2;i< =num/2;i++)
if(num%i == 0) {
enter = true;
args.IsValid = false;
break;
}
if(!enter)
args.IsValid = true;
}
questo quello C#.
{
int num = Convert.ToInt32(e.Value);
bool enter = false;
for (int i = 2; i < = num / 2; i++)
{
if (num % i == 0)
{
enter = true;
e.IsValid = false;
break;
}
}
if(!enter)
e.IsValid = true;
}
Le due funzioni sono identiche. Un'unico appunto lo faccio su come deve essere definita la funzione. Sia a livello server che a livello client la funzione deve accettare due parametri, il primo è il sender e il secondo sono gli argomenti. Per definire se la validazione è andata a buon fine o meno, si setta la proprietà IsValid del secondo parametro. Il valore del form, come vedete dal codice, lo si prende tramite la proprietà Value.
Ricordo che si possono applicare più validator allo stesso controllo e, l'esempio completo, dovrebbe prevedere anche un RequiredFieldValidator per assicurarsi che il controllo è effettivamente popolato da un valore ed un CompareValidator per verificare se c'è un numero, oltre a questo custom per vedere se è primo.
Link sponsorizzati

