This documentation is archived and is not being maintained.

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)

[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public interface IStateManager

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;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0