Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Disabilitare lo stato del controllo
martedì 15 dicembre 2009 - 14.58
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
mar 15 dic 2009 - 14:58
Salve,
volevo sapere se cera il modo di disabilitare lo stato del controllo. Facendo un pò di prove ho notato che per esempio nel caso del controllo HiddenField il valore viene mantenuto durante i postback, anche se imposto su "false" la proprietà "EnableViewState" (stessa cosa accade per le proprietà width e height del controllo panel).
Deduco quindi che il valore viene conservato nel control state.
A questo punto la soluzione sarebbe o disabilitare il control state o creare un nuovo controllo ereditando dalla classe HiddenField e facendo l'override di qualche metodo interno utilizzato per salvare il valore nel control state.
E possibile risolvere con una di queste due soluzioni? e se si, qualcuno di voi ha già provato a farlo?
Esistono altre soluzioni in merito?
FrancescoGuadagno
Profilo
| Senior Member
224
messaggi | Data Invio:
mer 16 dic 2009 - 09:21
>Salve,
>
>volevo sapere se cera il modo di disabilitare lo stato del controllo.
>Facendo un pò di prove ho notato che per esempio nel caso del
>controllo HiddenField il valore viene mantenuto durante i postback,
>anche se imposto su "false" la proprietà "EnableViewState" (stessa
>cosa accade per le proprietà width e height del controllo panel).
>Deduco quindi che il valore viene conservato nel control state.
Deduzione giusta
>A questo punto la soluzione sarebbe o disabilitare il control
>state o creare un nuovo controllo ereditando dalla classe HiddenField
>e facendo l'override di qualche metodo interno utilizzato per
>salvare il valore nel control state.
Che io sappia il ControlState non è disabilitabile, è stato creato apposta, proprio perchè le proprietà associate al ViewState erano disabilitabili. Credo quindi che anche con qualche override non risolveresti il problema. L'unica soluzione è creare proprietà tue e gestirle nella maniera più opportuna.
Gluck74
Profilo
| Guru
1.359
messaggi | Data Invio:
mer 16 dic 2009 - 10:13
Confermo, lo State Control non si disabilita, quindi se devi fare qualcosa di particolare, ti devi fare un CustomControl.
Ma cosa devi fare che non ho capito?
Se riesci a seguire un webcast in inglese/americano [ io non ce la faccio ;-)) ], questo ti spiega l'utilizzo di State Control e differenza con ViewState:
http://www.asp.net/
(S(ywiyuluxr3qb2dfva1z5lgeg))/learn/videos/video-241.aspx
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
gio 17 dic 2009 - 14:41
ok chiedevo per avere la conferma che il control state non si potesse disabilitare.
Lo facevo perchè per esempio nel caso dei controlli Panel ho visto che vengono trasportati avanti e indietro i valori del width ed Height e a me non serve. Era semplicemente x ottimizzare la quantità di dati trasportata. Invece nel caso degli HiddenField volevo evitare che il valore venisse conservato, la scorciatoia sarebbe ripulirli prima del rendering della pagina e dopo che il valore viene ripristinato (parlo del ciclo di vita della pagina), solo che per un motivi che non sto a spiegarvi altrimenti andremo x le lunghe mi viene difficile fare questa pulizia.
L'alternativa sarebbe usare qualche cos'altro oppure costruirmi un custom control tipo un HiddenField che però non conserva il valore nel viewstate.
FrancescoGuadagno
Profilo
| Senior Member
224
messaggi | Data Invio:
gio 17 dic 2009 - 15:29
Ti rispondo solo per "filosofeggiare" un pò
>Lo facevo perchè per esempio nel caso dei controlli Panel ho
>visto che vengono trasportati avanti e indietro i valori del
>width ed Height e a me non serve.
Ok, a te non serve, ma il browser come farebbe a sapere la width e la height da impostare?
> Era semplicemente x ottimizzare
>la quantità di dati trasportata. Invece nel caso degli HiddenField
>volevo evitare che il valore venisse conservato, la scorciatoia
>sarebbe ripulirli prima del rendering della pagina e dopo che
>il valore viene ripristinato (parlo del ciclo di vita della pagina),
>solo che per un motivi che non sto a spiegarvi altrimenti andremo
>x le lunghe mi viene difficile fare questa pulizia.
Gli hiddenField però o li crei tu (e quindi ne puoi gestire il contenuto) oppure sono hidden appositamente create dal framework per il trasporto della ViewState, quindi da non toccare.
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
gio 17 dic 2009 - 15:55
x quanto riguarda gli Hiddenfield ok posso svuotarli e riempirli secondo mia logica ma x quanto riguarda i panel il punto è che se io imposto un valore x width ed height dalle proprietà del controlli in aspnet e successivamente con javascript da browser modifico tali valori, al successivo postback rimangono i valori da me modificati tramite javascript. quindi vuol dire che tali proprietà si comportano un pò come la proprietà value di una textbox.
Oltretutto analizzando il contenuto del browser si vede che cengono salvati in appositi "campi" (penso che siano degli hiddenfield) con la seguente sintassi: id "id del panel + _ClientState" e valore "123,34" (i numeri sono degli esempi).
Gluck74
Profilo
| Guru
1.359
messaggi | Data Invio:
gio 17 dic 2009 - 16:59
questo ti dovrebbe dare qualche dritta:
http://visualstudiomagazine.com/Articles/2005/01/01/Manage-Client-State.aspx?Page=1
ciao
Torna su
Stanze Forum
Elenco Threads
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 !