Valore non trovato nel viewstate

mercoledì 06 febbraio 2013 - 00.42
Tag Elenco Tags  VB.NET  |  .NET 4.0

trinity Profilo | Guru

Spesso nelle pagina aspx lato code behind per gestire delle variabili, le quelli possono essere utilizzati in ogni punto della pagina stessa, ricorro all'utilizzo delle Viewstate. Mi sta capitando che il valore che passo ad una viewstate nell'evento init della pagina, poi non me lo ritrovo quando vado ad eseguire l'evento click di un button. Mi spiego con un esempio....

Nell'init ho questo codice:

If Not IsPostBack Then ViewState("NewUser") = Request.QueryString("newuser") If ViewState("NewUser") = "yes" Then ImageButtonAggiorna.ImageUrl = "/image/conferma.png" ElseIf ViewState("NewUser") = "no" Then ImageButtonAggiorna.ImageUrl = "/image/Aggiorna_profilo.png" End If End If

il valore della ViewState("NewUser") mi servirà anche quando vado ad eseguire il salvataggio dei dati con un button_click per distinguere se devo eseguire una insert sql perchè è un nuovo record oppure un'update.
Quando vado ad eseguire un controllo if..then sulla ViewState("NewUser") invece di avere un valore che può essere (come si vede nell'init) o ="Yes" oppure ="No", mi ritrovo un valore nullo ossia la viewstate è vuota. Come mai?
Cosa succede? Forse non vanno bene le viewstate?
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

ridaria Profilo | Expert

>Spesso nelle pagina aspx lato code behind per gestire delle variabili,
>le quelli possono essere utilizzati in ogni punto della pagina
>stessa, ricorro all'utilizzo delle Viewstate. Mi sta capitando
>che il valore che passo ad una viewstate nell'evento init della
>pagina, poi non me lo ritrovo quando vado ad eseguire l'evento
>click di un button. Mi spiego con un esempio....
>
>Nell'init ho questo codice:
>
> If Not IsPostBack Then
>ViewState("NewUser") = Request.QueryString("newuser")
> If ViewState("NewUser") = "yes" Then
>ImageButtonAggiorna.ImageUrl = "/image/conferma.png"
> ElseIf ViewState("NewUser") = "no" Then
>ImageButtonAggiorna.ImageUrl = "/image/Aggiorna_profilo.png"
> End If
> End If
>
>il valore della ViewState("NewUser") mi servirà anche quando
>vado ad eseguire il salvataggio dei dati con un button_click
>per distinguere se devo eseguire una insert sql perchè è un nuovo
>record oppure un'update.

Non ho mai usato le variabili del viestate, per conservare valori.
Nel tuo caso, quello che hai postato, puoi direttamente usare Request.QueryString("newuser"), da quello che vedo riversi Request.QueryString("newuser") in una variabile e poi usi la variabile nel blocco condizionale, un passaggio superfluo visto che il valore lo hai già in: Request.QueryString("newuser")


CIAO

Riccardo D'Aria

trinity Profilo | Guru

Si immaginavo ed in più ho letto che il viewstate è pesante per le pagine quindi semmai deve essere utilizzato con criterio. Solo che a questo punto per passare in lato code behind variabile da una sub all'altra mi tocca utilizzare le classiche dichiarazioni tipo private o public?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

ridaria Profilo | Expert

>Si immaginavo ed in più ho letto che il viewstate è pesante per
>le pagine quindi semmai deve essere utilizzato con criterio.

esatto, meglio faren un uso parsimonioso.


>Solo che a questo punto per passare in lato code behind variabile
>da una sub all'altra mi tocca utilizzare le classiche dichiarazioni
>tipo private o public?

???
Se il valore lo hai nella query string, quello sta sempre lì e puoi sempre leggerlo da qualunque sub della pagina, e quindi non vedo perchè palleggiratelo mettendolo in una variabile.

Un metodo classico e semplice di spostare variabili da una pagina ad un altra è lo sorico hidden field, che puoi leggere a tuo piacimento usando anche il view state.

CIAO

>
>Ciao
>Cirillo Fabio
>www.wondernet.biz
>fabio@wondernet.biz
>http://blogs.dotnethell.it/fabiocirillo/
>http://wnetsoftware.blogspot.com

Riccardo D'Aria

trinity Profilo | Guru

Nel senso se mi porto una variabile nel querystring sono d'accordo con te ma se esempio ricavo un valore da una stored e questo valore deve essere utilizzato in un'altra parte della pagina stessa, quindi avrei bisogno di portare questo valore in una variabile per poi poterlo utilizzare dove voglio. Te mi consiglio l'hidden field? é un oggetto asp vero?
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

ridaria Profilo | Expert

>Nel senso se mi porto una variabile nel querystring sono d'accordo
>con te ma se esempio ricavo un valore da una stored e questo
>valore deve essere utilizzato in un'altra parte della pagina
>stessa, quindi avrei bisogno di portare questo valore in una
>variabile per poi poterlo utilizzare dove voglio. Te mi consiglio
>l'hidden field? é un oggetto asp vero?

si certo, un hidden field va bene sono classicamente utilizzati proprio come dei contenitori di dati. Il loro utilizzo è anche suggerito in luogo delle variabili di sessione, di cui come ho già suggerito più volte ne sconsiglio l'uso indiscriminato.

CIAO


>Cirillo Fabio
>www.wondernet.biz
>fabio@wondernet.biz
>http://blogs.dotnethell.it/fabiocirillo/
>http://wnetsoftware.blogspot.com

Riccardo D'Aria

trinity Profilo | Guru

Nel senso che anche le variabili di sessione le vai a mettere negli hidden?
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

ridaria Profilo | Expert

>Nel senso che anche le variabili di sessione le vai a mettere

nel senso che ne consiglio un uso parsimonioso! Laddove non sono valori sensibili io li piazzo negli hidden field.

é chiaro che valori sensibili, come username, password, id Utenti e altro le stivo in variabili di sessione.

CIAO

Riccardo D'Aria

trinity Profilo | Guru

Ho capito ed è quello che faccio anche io.....grazie mille per le info buona giornata
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5