IStateManager Interface
Defines the properties and methods any class must implement to support view state management for a server control.
Assembly: System.Web (in System.Web.dll)
| Name | Description | |
|---|---|---|
![]() | IsTrackingViewState | When implemented by a class, gets a value indicating whether a server control is tracking its view state changes. |
| Name | Description | |
|---|---|---|
![]() | LoadViewState(Object) | When implemented by a class, loads the server control's previously saved view state to the control. |
![]() | SaveViewState() | When implemented by a class, saves the changes to a server control's view state to an Object. |
![]() | TrackViewState() | When implemented by a class, instructs the server control to track changes to its view state. |
A server control's view state comprises the cumulative values of the control's properties. This interface includes methods that save and load a server control's view state values, as well as a method that instructs the control to track any changes to its view state.
To customize the way your ASP.NET application manages server control view state, you must create a class that implements this interface because you cannot inherit from the StateBag class.
The following code example shows a class that implements the IStateManager interface. It includes implementations of the IsTrackingViewState property and the LoadViewState, SaveViewState, and TrackViewState methods.
// Create a class that implements IStateManager so that // it can manage its own view state. [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] public sealed class MyItem : IStateManager { private string _message; // The StateBag object that allows you to save // and restore view-state information. private StateBag _viewstate; // The constructor for the MyItem class. public MyItem(string mesg) { _message = mesg; _viewstate = new StateBag(); _viewstate.Add("message", _message); } // Create a Message property that reads from and writes // to view state. If the set accessor writes the message // value to view state, the StateBag.SetItemDirty method // is called, telling view state that the item has changed. public string Message { get { return (string)_viewstate["message"]; } set { _message = value; _viewstate.SetItemDirty("message", true); } } // Implement the LoadViewState method. If the saved view state // exists, the view-state value is loaded to the MyItem control. void IStateManager.LoadViewState(object savedState) { _message = (string)_viewstate["message"]; if (savedState != null) ((IStateManager)_viewstate).LoadViewState(savedState); } // Implement the SaveViewState method. If the StateBag // that stores the MyItem class's view state contains // a value for the message property and if the value // has changed since the TrackViewState method was last // called, all view state for this class is deleted, // using the StateBag.Clear method,and the new value is added. object IStateManager.SaveViewState() { // Check whether the message property exists in // the ViewState property, and if it does, check // whether it has changed since the most recent // TrackViewState method call. if (!((IDictionary)_viewstate).Contains("message") || _viewstate.IsItemDirty("message")) { _viewstate.Clear(); // Add the _message property to the StateBag. _viewstate.Add("message", _message); } return ((IStateManager)_viewstate).SaveViewState(); } // Implement the TrackViewState method for this class by // calling the TrackViewState method of the class's private // _viewstate property. void IStateManager.TrackViewState() { ((IStateManager)_viewstate).TrackViewState(); } // Implement the IsTrackingViewState method for this class // by calling the IsTrackingViewState method of the class's // private _viewstate property. bool IStateManager.IsTrackingViewState { get { return ((IStateManager)_viewstate).IsTrackingViewState; } } // Create a function that iterates through the view-state // values stored for this class and returns the // results as a string. public string EnumerateViewState() { string keyName, keyValue; string result = String.Empty; StateItem myStateItem; IDictionaryEnumerator myDictionaryEnumerator = _viewstate.GetEnumerator(); while (myDictionaryEnumerator.MoveNext()) { keyName = (string)myDictionaryEnumerator.Key; myStateItem = (StateItem)myDictionaryEnumerator.Value; keyValue = (string)myStateItem.Value; result = result + "<br>ViewState[" + keyName + "] = " + keyValue; } return result; } }
Available since 1.1

