ciao,
la tua domanda è il problema classico del passaggio da applicazioni win32, a applkicazioni Web.
Il fatto è che l'applicazione web usa Http, che è un protocollo passivo, ovvero tu chiedi qualcosa al server, lui risponde e poi del client che ha fatto la richiesta il server se ne dimentica.
Quando invece hai un'applicazione Win32, l'applicazione è sempre attiva, sa sempre cosa sta succedendo, perche' il thread che la lancia (windows quando fai click sull'exe) rimane in esecuzione.Questo lo puoi notare se guardi un'applicazione windows, nel file "Program.cs" il metodo "main" è quello lanciato (l'entry point dell'applicazione) e li dentro c'e' il codice di "Application.Run(...)" dove il processo lancia la prima form etc..e poi li dentro rimane, infatti quando chiudi la maschera principale l'applicazione va giu'.
Con Asp.net, la cosa è diversa, ogni volta che chiedi una pagina, l'applicazione parte, carica quello che deve caricare, esegue il codice per caricare dati /fare operazioni e poi ti da giu' l'html. Ma di quella pagina non c'e' traccia in memoria, ovvero quando al richiedi di nuovo, lui (IIS) lancia un'altro thread e quindi non sa cosa era stato fatto da quello prima...a meno di non avere delle "valigie" di info che sono il ViewState (o Session ma il viewstate è quel meccanismo automatico per la gestione di queste operazioni).
Grazie proprio al viewstate, lui è in grado di ricostruire lo stato di visualizzazione dei controlli della pagina e quindi comportarsi come ci aspettiamo.
Questo meccanismo è abilitato impostando nella pagina il fatto che lui generi nell'html che butta giu' al browser, queste informazioni di "stato", percio' verifica che nella pagina ci sia EnableViewState="true"
Lo so che forse sono stato 1po contorto ma il concetto è importante da capire, perche' adesso hai un problemino semplice ma in futuro si possono avere delle difficolta' dato che ovviamente, si è sempre abituati a pensare ad applicazioni win32...
Un esempio utile per capire il fiume di parole (alla Jalisse) eccolo qui:
come vedi ho settato appositamente "EnableViewState=true", anche se di default lo dovrebbe essere gia'...
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo