55 messaggi dal 20 maggio 2009
Ciao,

ho la seguente situazione:

una pagina composta da vari campi, ogni campo è validato da 1 o più validatori (RequiredFieldValodator,RegulaExpressionValidator ect...)

alla fine della pagina un pulsante <asp:button/>

Oltre a i controlli fatti dai validatori ho bisogno di eseguire altri controlli custom fatti in javascript.

quindi sull'head della pagina ho messo le mie funzioni javascript, e nel pulsante ho messo onClientClick.

quindi
 <asp:Button ID="btnProsegui" ValidationGroup="ValidateKit"  runat="server" Text="Prosegui" OnClick="btnProsegui_Click"
                                 OnClientClick="VerificaForm();" />


Il problema è che la parte javascript non funziona se i validatori asp.net (e il pulsante prosegui) hanno il validationGroup.
Cioè i javascript vengono totalmente ignorati.
Se tolgo i validationGroup in caso di errori, qualsiasi altro postBack o link del sito è bloccato dalle validazioni.

Ho pensato di usare dei customValidator insrendo le funzioni javascript ma è un lavoraccio che vorrei evitare perchè il javascript è un unica funzione e andrebbe diviso in tante funzioni da associare ai vari controlli.

Ho a disposizione anche i controlli telerik asp.net ajax

Qualche idea ?
Modificato da artanis il 01 giugno 2011 09.36 -

Vivaldi Francesco
5.610 messaggi dal 09 febbraio 2002
Contributi
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 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
    In primo piano

    I più letti di oggi

    Media
    In evidenza
    MISC