2010-01-04 8 views
6

Ho un modulo Web ASP.NET che desidero convalidare lato client e lato server, utilizzando gli stessi controlli di convalida. Non riesco a trovare la soluzione per questo - la validazione del client funziona alla grande, ma quando disattivo javascript - Ignora la convalida.ASP.NET lato server di convalida

L'aiuto sarebbe molto apprezzato.

romana

+0

puoi darci maggiori informazioni? In particolare quali controlli di validazione stai usando? I validatori ASP.NET incorporati? Se è così allora quale di questi stai usando (ad esempio CustomValidator). Alcuni frammenti di codice pertinente aiutano sempre. Infine, stai usando i pannelli di aggiornamento o qualcosa di AJAX-y? –

+0

Utilizzando i validatori regolari, nessun CustomValidator. Niente AJAXy, niente pannelli ... niente. solo una forma semplice :) – Roman

risposta

9

Si può sempre far scattare la convalida con il metodo validator1.Validate(), che farà il confronto sul lato server. Controllare Page.IsValid per verificare se la convalida sul lato server non viene eseguita? Penso che puoi invocarlo tramite Page.Validate().

HTH

15

esplicito chiamare Page.Validate() sul lato server.

Oppure il sovraccarico Page.Validate(string) per scegliere come target uno dei gruppi di convalida.

Aggiornamento:

ho dimenticato, dopo aver eseguito Convalida (..), controllare la Page.IsValid property - tocca a voi per fermare la pagina di presentare se questa proprietà == false.

+0

Ciao, Ho provato questo - Ma ancora non ha funzionato. Io uso i normali convalidatori di asp.net. anche non quello personalizzato. quando disabilito javascript - passa solo attraverso, anche se uso esplicitamente Page.Validate(); – Roman

+0

Hmmmmm ... se non lo hai già fatto, prova la versione sovraccaricata. Altrimenti, da quale metodo o evento stai chiamando Page.Validate? –

+0

Ho perso la barca su quello dimenticando la pagina.IsValid. –

3

Se si utilizzano i controlli di convalida standard, i dati vengono sempre verificati nuovamente sul server anche se viene specificata la convalida del lato client.

vedere la nota in questo articolo subito dopo la figura 2 :, che dice:

duplice controllo convalida lato client

Un punto interessante è che, anche se i dati modulo viene convalidato su il client (eliminando la necessità di richieste e risposte aggiuntive dal server per convalidare i dati), i dati immessi vengono nuovamente verificati sul server . Dopo che i dati viene controllato sul cliente e ha trovato valida, è ricontrollato sul server utilizzando le stesse regole di convalida. Queste sono le regole che stabilisci per garantire contro alcuni programmatori ingannevoli fuori là provare a ignorare il processo di convalida da postare la pagina sul server come se ha superato la convalida.

http://msdn.microsoft.com/en-us/library/aa479013.aspx

Tuttavia, è possibile forzare la convalida sul server chiamando Page.Validate()

3

romana,

È possibile utilizzare il validatore personalizzato ASP.net per fornire sia un client e un metodo server per la convalida. In questo modo se disabiliti il ​​js dovresti comunque premere il metodo di convalida del server. In questo esempio la funzione "ClientValidate" verrebbe definita in un blocco javascript sulla tua pagina e la funzione "ServerValidate" sarebbe presente nel tuo file codebehind.

<asp:textbox id="textbox1" runat="server"> 
<asp:CustomValidator id="valCustom" runat="server" 
    ControlToValidate="textbox1" 
    ClientValidationFunction="ClientValidate" 
    OnServerValidate="ServerValidate" 
    ErrorMessage="*This box is not valid" dispaly="dynamic">* 
</asp:CustomValidator> 
+0

Tutti i validatori ASP.NET forniscono la convalida lato client e server - non solo CustomValidator. –

0

Trovato la risposta! La risposta è utilizzare Page.Validate() e quindi verificare la presenza di Page.IsValid per verificare se la validazione è valida o meno. Solo l'uso di Page.Validate() non ha aiutato - il codice è proseguito e non si è fermato.

Grazie ragazzi, romana