Export (0) Print
Expand All

IStateManager Interface

Defines the properties and methods any class must implement to support view state management for a server control.

Namespace:  System.Web.UI
Assembly:  System.Web (in System.Web.dll)

public interface IStateManager

The IStateManager type exposes the following members.

Public propertyIsTrackingViewStateWhen implemented by a class, gets a value indicating whether a server control is tracking its view state changes.

Public methodLoadViewStateWhen implemented by a class, loads the server control's previously saved view state to the control.
Public methodSaveViewStateWhen implemented by a class, saves the changes to a server control's view state to an Object.
Public methodTrackViewStateWhen 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.   
   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
            return (string)_viewstate["message"];
            _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)

    // 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"))
            // 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()

    // Implement the IsTrackingViewState method for this class  
    // by calling the IsTrackingViewState method of the class's 
    // private _viewstate property.  
    bool IStateManager.IsTrackingViewState
            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;

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1
© 2015 Microsoft