Validare campi

giovedì 16 aprile 2009 - 11.26

lore_21 Profilo | Newbie

ciao a tutti, sono un nuovo utente e (lo premetto) non proprio un guru di asp.net..

ho un grid view che interfaccia un db access per inserire e modificare i dati: ho usato i validator (required, compare, etc) e in locale funzionano bene, ma da server non funzionano per niente
vorrei evitare di mettere mano sul server e cosi ho pensato di fare la validazione in code behind, ma come dicevo prima non sono un fenomeno...
potreste darmi una mano o qualche dritta?

ciao
grazie

alx_81 Profilo | Guru

>ciao a tutti, sono un nuovo utente e (lo premetto) non proprio
>un guru di asp.net..
Ciao!

>ho un grid view che interfaccia un db access per inserire e modificare
>i dati: ho usato i validator (required, compare, etc) e in locale
>funzionano bene, ma da server non funzionano per niente
>vorrei evitare di mettere mano sul server e cosi ho pensato di
>fare la validazione in code behind, ma come dicevo prima non
>sono un fenomeno...
>potreste darmi una mano o qualche dritta?
ho avuto in passato un problema simile e il tutto stava nella mancata presenza di una cartella che si chiama aspnet_client.
Puoi crearla tramite il comando
%windir%\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis -c

dovrebbero funzionarti anche lato client.
Comunque, puoi sempre usare i validatori per validare sia lato client che lato server.
La pagina ha una proprietà che si chiama IsValid (http://msdn.microsoft.com/it-it/library/system.web.ui.page.isvalid.aspx) che ti permette proprio di controllare anche lato server.

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

lore_21 Profilo | Newbie

ciao alessandro,
grazie per la risposta fulminea!

il probl è che la cartella aspnet_client è gia presente sul server (che non è aruba), la versione impostata è la 2.0 etc....

ti posto il code del validator che è già lato server:

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="INSERIRE UN VALORE!" Display="Dynamic"></asp:RequiredFieldValidator>

però da server non funziona e non so come provvedere...

grazie
ciao

alx_81 Profilo | Guru

>il probl è che la cartella aspnet_client è gia presente sul server
>(che non è aruba), la versione impostata è la 2.0 etc....
a me è successo anche su aruba, ho aperto un ticket, hanno fatto regiis -c e tutto funzionava..
provaci comunque.

>ti posto il code del validator che è già lato server:
><asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
>ControlToValidate="TextBox1" ErrorMessage="INSERIRE UN VALORE!"
>Display="Dynamic"></asp:RequiredFieldValidator>
>però da server non funziona e non so come provvedere...
cosa intendi "da server non funziona"? Questa è la normale dichiarazione di un validatore, che ti valida una textbox lato client.
Poi per capire se a server è tutto ok, devi controllare la proprietà che ti dicevo prima.
Se osservi attentamente il link, ci sono verso la fine anche dei walkthrough che ti aiutano ad implementare le validazioni.

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

lore_21 Profilo | Newbie

nel senso che dopo che faccio l'upload sul server delle pagine che in locale funzionano e testo se i validator funzionano da web, i validator stessi NON funzionano. Il gridview raccoglie i dati "errati" mandando in errore l'applicazione (perchè i dati devono essere solo numerici: se io inserisco una lettera dà errore).

Quindi dovrei fare in modo che se l'utente inserisce una lettera o addirittura lascia il campo vuoto gli compaia un messaggio di avviso che deve riempire i campi correttamente.

Sto provando a utilizzare i suggerimenti del link microsoft sopra suggerito, ma non riesco ad ottenere risultati.

Il gridview che uso ha le azioni "Modifica", "Conferma" e "Annulla" in cui l'utente modifica il campo inserendo il numero. Vorrei far rilevare l'errore quando l'utente "conferma" l'inserimento.

questo è il codice degli eventi appena descritti, in mezzo ai quali vorrei inserire i controlli:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

grazie ancora..

alx_81 Profilo | Guru

>Sto provando a utilizzare i suggerimenti del link microsoft sopra
>suggerito, ma non riesco ad ottenere risultati.
secondo me dovresti proprio contattare il fornitore del servizio e allertarlo per farti aiutare.

>Il gridview che uso ha le azioni "Modifica", "Conferma" e "Annulla"
>in cui l'utente modifica il campo inserendo il numero. Vorrei
>far rilevare l'errore quando l'utente "conferma" l'inserimento.
Mi permetto di consigliarti anche una ulteriore alternativa per la validazione:
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
tutto tramite jquery, non so se sei a conoscenza dello strumentino, ma leggi su http://jquery.com per capire come funziona (è un framework javascript usatissimo, sarà anche incluso in Visual Studio nelle prossime versioni).

Detto questo, lato server puoi gestire come hai detto gli eventi, andando ad usare le tue regole con semplici if. Puoi sfruttare anche l'oggetto RegEx:
http://msdn.microsoft.com/it-it/library/system.text.regularexpressions.regex(VS.80).aspx

con tanto di esempi:
http://msdn.microsoft.com/en-us/library/kweb790z.aspx

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

lore_21 Profilo | Newbie

ale ti ringrazio intanto per l'assistenza e la pazienza

cmq ho risolto il problema con una soluzione cretinissima (e la comunico per i posteri):
la validazione che avevo impostato io era sia lato client che lato server. Con visual web (che io uso) è bastato disattivare il lato client impostando la proprietà EnableClientScript del comando di convalida su False.

No comment.

Io sono stato scemo a non pensarci, ma imho è un problema che microsoft potrebbe risolvere...

grazie ancora!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5