LASS.IT

immagini    foto    parole    città    storie    web

asp.Net Custom Validators

TAG: asp.net c# custom validatorsCat: Asp.Net



custom validatorAsp.net mette a disposizione i Validator per verificare i campi di un form.
Vediamo come funzionano (e quando non funzionano) i Custom Validator




Lo confesso: a me i validator di .Net non piacciono.
Però talvolta sono utili.
Un validator un po' particolare e che lascia una maggiore libertà è il CUSTOM VALIDATOR.

A differenza degli altri permette di scrivere una funzione in cui si possono fare controlli un po' più approfonditi prima di far scattare l'errore.

Nel file .aspx mettiamo una textbox, il rispettivo custom validator e un bottone che non fa nulla se non produrre un postback


Custom text:<br />
<%--text box--%>
<asp:TextBox runat
="server" id="txtCustom" />
<asp:CustomValidator runat
="server" id="myCustomValid" controltovalidate="txtCustom" onservervalidate="myCustomValid_ServerValidate" errormessage="Error message" />
    
<br />
<asp:Button ID
="Button1" runat="server" Text="Button" />


Nel file .cs


using System.Text.RegularExpressions;

protected void 
myCustomValid_ServerValidate(object sender, ServerValidateEventArgs e)
{
    
string e.Value;
    
Regex regex = new Regex(@"^\d+$");
        if 
(regex.IsMatch(s))
            e.IsValid 
= true;
        else
            
e.IsValid = false;
}



La funzione non fa altro che verificare, tramite una regular expression, che il contenuto della textbox sia composto solo da numeri. Se non lo è scatta l'errore, altrimenti (in questo caso) non succede nulla.

ATTENZIONE: se nella textbox si mettono solo spazi il controllo non scatta.
Questo perchè il validator considera il contenuto fatto di soli spazi come vuoto e quindi non si prende la briga di validarlo.
Ho perso un sacco di tempo a capire come ovviare a questo problema. Se un'utente inserisce solo spazi per evitare di compilare il campo e il controllo non scatta, a me questo non va bene.
Dopo aver cercato un bel po' su internet sembra che l'unica soluzione sia di aggiungere al custom validator anche un required field validator che però rende il campo obbligatorio.
E' solo una soluzione palliativa perchè si potrebbe verificare la situazione in cui io non voglio che un campo sia obbligatorio ma, se fosse compilato, vorrei che seguisse determinati criteri. Mettendoci invece il required field validator diventa mandatorio.

Se qualcuno dovesse avere una soluzione a questo annoso problema e avesse voglia di scrivermela può farlo da qui

Spero che sia utile



Posted 11/12/2012



Link sponsorizzati