ASP.NET Usare i validator: CustomValidator

dic 4th, 2009 | Filed under .NET, ASP.NET, C#, Snippet

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.

    <form runat="server">
        <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

        function isPrime(sender, args)
        {
            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#.

protected void isPrime(object sender, ServerValidateEventArgs e)
    {
        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

Segnalalo ai tuoi amici!

Post correlati:

Non sono ancora stati lasciati commenti.