Capire se il ViewState è abilitato per un certo server control in ASP.NET 4.0

di Marco De Sanctis, in ASP.NET 4.0,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi