System.Web.UI.PageStatePersister Class

Provides the base functionality for ASP.NET view state persistence mechanisms.

See Also: PageStatePersister Members


public abstract class PageStatePersister


The HTTP requests and responses are inherently stateless. To maintain state information between HTTP requests, ASP.NET server pages can store System.Web.UI.Page state. This state, called view state, consists of page and control settings and data that make the page and controls appear as if they are the same ones that the user saw and interacted with on their last round trip to the server. Several mechanisms exist to store view state between successive requests to the same page. The abstract System.Web.UI.PageStatePersister class represents the base class for these state information storage mechanisms.

The default view state persistence mechanism in ASP.NET is to maintain the state information as a Base64-encoded string in a hidden HTML element (an element with the type attribute set to "hidden") on the page. An ASP.NET page uses a System.Web.UI.HiddenFieldPageStatePersister object to perform this work, using an System.Web.UI.IStateFormatter instance to serialize and deserialize object state information. Alternately, you can store the view state for your pages in the System.Web.HttpContext.Session object on the server using the System.Web.UI.SessionPageStatePersister class for mobile clients with limited bandwidth and resources. In some cases, you might disable view state persistence altogether. If you do this, the result is that sometimes pages and controls that rely on state persistence do not behave correctly. For more information about page state management and view state, see ASP.NET State Management Overview.

If you are writing controls, you can store state information for the controls in the Control.ViewState dictionary, which is a System.Web.UI.StateBag object. A developer would retrieve the control state through the PageStatePersister.ControlState property. You assign keys and values to the Control.ViewState property, and the System.Web.UI.Page object serializes the state information between requests. To perform custom state handling in your control, override the Control.LoadViewState(object) and Control.SaveViewState methods. Any state information that is stored in this dictionary is lost when view state is disabled by a page developer. To mitigate this, in ASP.NET version 2.0 you can store critical state information in a separate object, called control state. The control state object is not affected when view state is disabled by a page developer. Storing state information in the control state object requires that the control override the Control.LoadControlState(object) and Control.SaveControlState methods and that the control be registered to store state information in control state every time the control is initialized. You can register a control to use control state by overriding the Control.OnInit(EventArgs) method and calling the Page.RegisterRequiresControlState(Control) method. For more information about using the Control.ViewState property and control state when developing controls, see Developing Custom ASP.NET Server Controls.

To maintain view state on clients that cannot support the existing view state persistence mechanisms, you can extend the System.Web.UI.PageStatePersister class to introduce your own view state persistence methods, and you can use page adapters to configure your ASP.NET application to use different view state persistence mechanisms based on the type of client to which a page is served. Classes that derive from the System.Web.UI.PageStatePersister class must override the abstract PageStatePersister.Save method to store view state and control state in the persistence medium, and override the PageStatePersister.Load method to extract it. If you need to serialize view state and control state to a string, you can use the System.Web.UI.IStateFormatter object that is accessed using the PageStatePersister.StateFormatter property. It efficiently serializes and deserializes object state information to a Base64-encoded string. You can also override the PageStatePersister.StateFormatter property to supply your own object state serialization mechanism.


Namespace: System.Web.UI
Assembly: System.Web (in System.Web.dll)
Assembly Versions:
Since: .NET 2.0