Continuando con le novità introdotte nella nuova versione di ASP.NET, troviamo la proprietà ViewStateMode. Contrariamente a quello che consente di fare la proprietà EnableViewState, questa proprietà ci consente di disabilitare selettivamente il ViewState in un controllo contenitore e di abilitarlo solo per i controlli figli. In questo modo possiamo ad esempio disabilitare il ViewState sull'intera pagina e abilitarlo solo sui controlli per i quali è necessario. Ma la stessa cosa possiamo farla ad esempio anche su un Panel ed i controlli in esso contenuti.
Questa proprietà è di tipo ViewStateMode, ovvero un enum omonimo della proprietà stessa che può assumere i valori:
- Disabled: ViewState disabilitato per il controllo e per i controlli figli
- Enabled: ViewState abilitato per il controllo e per i controlli figli
- Inherit: eredita l'impostazione dal controllo padre. Questo è il valore di default
Vediamone un esempio:
<asp:Placeholder runat="server" ViewStateMode="Disabled"> <asp:Button runat="server" ViewStateMode="Disabled" /> <asp:TextBox runat="server" ViewStateMode="Enabled" /> <asp:Label runat="server" /> </asp:Placeholder>
Poiché la proprietà ViewStateMode è definita nella classe Control da cui derivano tutti i controlli ASP.NET, può essere impostata anche programmaticamente su praticamente qualsiasi controllo, compresa quindi la pagina stessa. Per questioni di retrocompatibilità , nel caso in cui EnableViewState fosse impostato a false, ViewStateMode non avrebbe alcun effetto.