Come abbiamo visto nello script #1023, ASP.NET 4.0 introduce un'eccezionale flessibilità nella gestione del ViewState, che permette di controllarne l'abilitazione in maniera estremamente precisa e selettiva.
Alle volte può essere necessario capire se un dato controllo server sia configurato o meno per utilizzare il ViewState, magari per decidere se abilitare o meno una particolare funzionalità che lo richiede. Allo scopo è disponibile la proprietà IsViewStateEnabled, che però è definita come protected internal e quindi invocabile solo dall'interno del controllo su cui si vuole effettuare la verifica.
Per ovviare a questa limitazione, possiamo realizzare un extension method che ne replichi la logica, come quello mostrato in basso:
public static class ViewStateUtils { public static bool CheckViewStateEnabled(this Control control) { if (!control.EnableViewState) return false; if (control.ViewStateMode == ViewStateMode.Inherit) { if (control.Parent == null) return true; return CheckViewStateEnabled(control.Parent); } return (control.ViewStateMode == ViewStateMode.Enabled); } }
In questo modo raggiungere il nostro scopo diventa assolutamente banale.
protected void Page_Load(object sender, EventArgs e) { if (this.theGridView.CheckViewStateEnabled()) { this.theLabel.Text = "Il ViewState per la GridView è attivo"; } }
Per approfondimenti:
#1023 - ViewStateMode in ASP.NET 4.0: come controllare il ViewState
https://www.aspitalia.com/script/1023/ViewStateMode-ASP.NET-4.0-Controllare-ViewState.aspx
Le novità di ASP.NET 4.0
https://www.aspitalia.com/articoli/asp.net4/introduzione.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Cache policy su route groups di Minimal API in ASP.NET Core 7
Load test di ASP.NET Core con k6
Short-circuiting della Pipeline in ASP.NET Core
Implementare il throttling in ASP.NET Core
Usare ASP.NET Core dev tunnels per testare le applicazioni su internet
Utilizzare la libreria Benchmark.NET per misurare le performance