Esecuzione di ASP.NET senza viewstate attivato
-
03-07-2019 - |
Domanda
Stiamo per iniziare a ricostruire uno dei nostri progetti ASP.NET e vorrei provare a svilupparlo senza viestate attivato (disabilitato in web.config).
Conosco gli aspetti positivi e negativi di viewstate e in generale di cosa tiene traccia rispetto allo stato di controllo, tuttavia vorrei sapere:
-
Quali sono le principali differenze nei processi di sviluppo? Vale a dire in che modo strutturi il tuo Page_Load ecc?
-
Esiste qualche funzionalità nei controlli ASP.NET standard che in realtà non funzionerà senza viewstate attivato?
Inoltre, ci sono articoli dettagliati sulle differenze del flusso di lavoro tra lavorare con e senza VS?
Soluzione
La maggior parte dei controlli come TextBox e DropDownLists funzioneranno perfettamente senza viewstate.
Non sono a conoscenza di problemi relativi al processo di sviluppo, ad eccezione di eventuali controlli o proprietà creati o modificati tramite il codice che non persistono senza viewstate, quindi è necessario ricrearli / modificarli su un postback.
Ho alcune pagine molto grandi con grandi viewstate. Ho fatto un esperimento per disabilitare viewstate per l'intero progetto e non ho riscontrato (inizialmente) alcuna perdita di funzionalità evidente. Quindi alcuni piccoli problemi sono emersi durante i test, quindi l'abbiamo ripristinato. Ma la nostra app Web di 300 pagine era probabilmente funzionale al 99% senza viewstate. I problemi che avevamo erano incentrati sui datagrid - principalmente sul paging, e creavano dinamicamente controlli e altre cose modificate dal codice dietro, e quindi non persistevano senza viewstate.
Questo è un ottimo articolo su Viewstate:
Altri suggerimenti
Se sei contrario a viewstate, perché non provare a utilizzare il framework MVC? Potrebbe essere un aggiustamento più semplice.
Disattivo viewstate sui miei progetti. Uso i metodi scatter / gather per popolare e ottenere valori dalle pagine aspx ai / dai miei oggetti di accesso ai dati. È molto più pulito e semplice rispetto all'utilizzo di viewstate.