2011-01-28 6 views
5

Ogni volta che si invia un modulo, tutti i valori dei campi vengono registrati sul server e sono disponibili nell'oggetto Richiesta. Idealmente, si può usare lo stesso oggetto per leggere i valori ed eseguire una qualsiasi delle operazioni con esso.Perché ViewState è richiesto quando l'oggetto Request contiene tutti i valori del campo?

Quindi, perché abbiamo bisogno di ViewState per contenere i valori dei campi?

Per favore perdonate la mia ignoranza, penso che mi sto perdendo qualcosa di abbastanza ovvio qui, ma non riesco a capire cosa.

risposta

2

Come da V4Vendetta, è possibile disattivare ViewState sui vostri controlli, ma allora si avrebbe bisogno di sviluppare manualmente "stile ASP classico" per esempio se fosse necessario mantenere l'utente sulla pagina e se un modulo fallisse la convalida, avresti quindi bisogno di reimpostare i valori iniziali su qualsiasi cosa l'utente li abbia impostati, altrimenti i dati dell'utente andrebbero persi.

I controlli ASP Net gestiscono in modo un po 'più elegante mantenendo queste informazioni in ViewState. Ma se non si ha mai bisogno di rendere il controllo di nuovo, o se si rendono i dati di controllo sempre nuovi senza il suo stato precedente (ad esempio una griglia paginata), disabilitare la funzione ViewState per il controllo farà risparmiare larghezza di banda.

Una buona spiegazione di ViewState here.

+0

Ecco un altro buon articolo su View State http://aspnetresources.com/articles/ViewState –

1

Viewstate è la tecnica di gestione dello stato di ASP.NET introdotta per mantenere lo stato corrente della pagina tra round trip sul server. Puoi disabilitarlo se non vuoi questa funzione, si basa esclusivamente su come implementi le tue pagine.

<%@ Page EnableViewState=”false”%> 
+0

Capisco che, tuttavia, sto solo cercando di capire perché è stato introdotto in primo luogo. Ci sono casi speciali, quando l'uso di ViewState è d'obbligo? –

+0

Per mantenere gli stati per i postback, in modo che i valori vengano mantenuti altrimenti sarà necessario impostarlo sempre al caricamento della pagina – V4Vendetta

4

La ragione più ovvia in cui è stato introdotto ViewState in ASP.Net era consentire un modello di programmazione simile a Winform (basato sugli eventi).

Quando si dispone di un controllo lato server (una casella di testo per esempio), la pagina html rispedito al browser contiene:

  • il valore iniziale del controllo, codificato nel ViewState => questo valore non può essere modificata dal browser/utente
  • il controllo stesso => ​​il browser/utente può modificare il suo stato

Quando il modulo viene inviato al server, il motore sottostante ASP.Net confronterà il controllo nuovo valore con il valore iniziale che è stato memorizzato nel ViewState. Se non è lo stesso, verrà attivato un evento OnChange e sarà possibile collegarlo come si farebbe in un'applicazione Winform.

+0

E altri eventi come clic sui pulsanti, clic del mouse/sposta? puoi dire come il framework asp.net rileva quegli eventi? –

Problemi correlati