State Management in ASP.NET
As we all know, HTTP or HTTPS is stateless protocol. It just cleans up or we can say removes all the resources/references that were serving a specific request in the past.
Stateless means, whenever we visit a website, our browser communicates with the respective server depending on our requested functionality or the request. In this case HTTP/HTTPs doesn't remember what website or URL we visited, or in other words we can say it doesn't hold the state of a previous website that we visited before closing our browser, that is called stateless.
So our browsers are stateless.
Contents
State Management Types
Client-side | Techniques
View State
View State is the method to preserve the Value of the Page and Controls between round trips. It is a Page-Level State Management technique. View State is turned on by default and normally serializes the data in every control on the page regardless of whether it is actually used during a post-back.Please keep in mind though, that while cookies and sessions can be accessed from all your pages on your website, ViewState values are not carried between pages.
Points of ViewState:
- ViewState does not hold the controls, rather it holds the values of the form controls and their corresponding ID's that would otherwise be lost due to a post back because they do not post with the form.
- ViewState is not used to hold session data or to transmit data between pages.
- ViewState does not recreate the dynamically created controls of a page.
- It does not restore the values to the controls after a post back operation.
- ViewState for a control is disabled, still the value would be retained after a post back of the page occurs, for input controls like TextBox or DropDownList.
So, ViewState represents the state of a page when it was last processed on the web server. It holds the values of a control that has been dynamically changed.
How does ViewState work?
When the page is first created all controls are serialized to the ViewState, which is rendered as a hidden form field named __ViewState. This hidden field corresponds to the server side object known as the ViewState. ViewState for a page is stored as key-value pairs using the System.Web.UI.StateBag object. When a post back occurs, the page de-serializes the ViewState and recreates all controls. The ViewState for the controls in a page is stored as base 64 encoded strings in name - value pairs. When a page is reloaded two methods pertaining to ViewState are called, namely the LoadViewState method and SaveViewState method. The following is the content of the __ViewState hidden field as generated for a page in my system.
ViewState can be enabled and disabled in any of the following ways:
- Control Level
- Page Level
- Application Level
- Machine Level