You can disable viewstate on an ASP .NET 2.0 website by setting the enabledViewState=”false” on the configuration > system.web > pages node in the Web.config:
<pages enableViewState="false">
Then you will have to fill dropdownlists etc. on every page postback in the OnInit event of the page and some times have to use the good old: this.Request.Form
string selectedValue = this.Request.Form["ctl00$MainContentPlaceHolder$selectBatchDropDownList"];
The "ctl00$MainContentPlaceHolder$selectBatchDropDownList" is the control UniqueID (selectedBatchDropDownList.UniqueID)
However, after reading some articles:
http://dotneteers.net/blogs/petersm/archive/2006/11/09/how-to-put-controlstate-into-viewstate-and-how-to-put-viewstate-into-session.aspx
http://weblogs.asp.net/ngur/archive/2004/03/08/85876.aspx
http://blog.tatham.oddie.com.au/2008/12/18/how-i-learned-to-stop-worrying-and-love-the-view-state/
I re-enabled ViewState and started filling dropdownlists on the page “OnInit” event and saved the viewstate in the sessionstate.
This allowed me to use the normal code and reduced the viewstate size to 50 characters.
To persist viewstate to sessionstate use:
/// <summary> /// Set viewstate to sessionstate /// </summary> protected override PageStatePersister PageStatePersister { get { return new SessionPageStatePersister(this); } }
In the web.config
<system.web> <browserCaps> <case> RequiresControlStateInSession=true </case> </browserCaps>
To completely remove viewstate information use:
/// <summary> /// Completly disable viewstate for performance /// </summary> /// <param name="viewState"></param> protected override void SavePageStateToPersistenceMedium(object viewState) { } /// <summary> /// Completly disable viewstate for performance /// </summary> /// <returns></returns> protected override object LoadPageStateFromPersistenceMedium() { return null; }