Sai che puoi fare, se non ti secca smanettare col javascript? Pluggarti nel meccanismo di autenticazione client di Asp.net.
Nel momento in cui clicchi il Button, una funzione javascript generata da Asp.net cicla la collezione Page_Validators e per ciascuno degli elementi invoca una funzione. Se almeno una di queste restituisce false, il postback non avviene. Tu puoi aggiungere un tuo validatore a questa collezione.
Per prima cosa creati una <span> da qualche parte nella tua pagina. Dentro mettici un messaggio da mostrare all'utente quando la tua validazione fallisce.
<span id="myvalidationspan" style="color:Red;visibility:hidden;">* Il modello non e' valido</span>
Ora aggiungi alla tua pagina la funzione di validazione. Può contenere quello che vuoi, l'importante è che restituisca true o false, a seconda che la validazione abbia avuto successo o meno.
Chiama la funzione come vuoi.
function doMyValidation(){
//qui la tua logica di validazione.
var esito = confirm("Vuoi far passare la validazione?");
return esito;
}
Io non ho implementato alcuna logica, lascio scegliere all'utente :)
Ora devi legare il tutto. Quando la pagina si è caricata (quindi su window.onload, oppure se usi jquery dentro il $(document).ready), devi eseguire questo codice:
var myValidation = document.getElementById("myvalidationspan");
myValidation.validationGroup = "gruppo1";
myValidation.evaluationfunction = doMyValidation;
myValidation.errormessage = "Messaggio per il ValidationSummary";
myValidation.isvalid = false;
Page_Validators.push(myValidation);
In pratica vai ad accodare la tua span ai Page_Validators. Nota in particolare le proprietà accessorie .validationGroup e .evaluationfunction che sono quelle fondamentali affinché il meccanismo di autenticazione sappia quale funzione deve eseguire, e per quale gruppo di validazione deve essere invocata.
Se nella pagina hai messo anche un controllo ValidationSummary, ti potrebbe far comodo settare la proprietà .errormessage, altrimenti puoi anche ometterla.
Ricorda comunque che la validazione client è solo una comodità per l'utente. Poi devi riprodurre la tua logica anche lato server se vuoi che l'applicazione sia sicura.
ciao,
Modificato da BrightSoul il 01 giugno 2011 22.27 -