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.   

<AspNetHostingPermission(SecurityAction.Demand, _
   Level:=AspNetHostingPermissionLevel.Minimal)> _
Public NotInheritable Class MyItem
    Implements IStateManager
    Private _message As String 

    ' The StateBag object that allows you to save 
    ' and restore view-state information. 
    Private _viewstate As StateBag

    ' The constructor for the MyItem class. 
    Public Sub New(ByVal mesg As String)
        _message = mesg
        _viewstate = New StateBag()
        _viewstate.Add("message", _message)
    End Sub 'New 

    ' 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 Property Message() As String 
            Return CStr(_viewstate("message"))
        End Get 
        Set(ByVal value As String)
            _message = value
            _viewstate.SetItemDirty("message", True)
        End Set 
    End Property 

    ' Implement the LoadViewState method. If the saved view state 
    ' exists, the view-state value is loaded to the MyItem  
    ' control.  
    Sub LoadViewState(ByVal savedState As Object) Implements IStateManager.LoadViewState
        _message = CStr(_viewstate("message"))
        If Not (savedState Is Nothing) Then 
            CType(_viewstate, IStateManager).LoadViewState(savedState)
        End If 
    End Sub 'LoadViewState
    ' 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. 
    Function SaveViewState() As Object Implements 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 Not CType(_viewstate, IDictionary).Contains("message") OrElse _viewstate.IsItemDirty("message") Then
            ' Add the _message property to the StateBag.
            _viewstate.Add("message", _message)
        End If 
        Return CType(_viewstate, IStateManager).SaveViewState()
    End Function 'IStateManager.SaveViewState

    ' Implement the TrackViewState method for this class by 
    ' calling the TrackViewState method of the class's private 
    ' _viewstate property. 
    Sub TrackViewState() Implements IStateManager.TrackViewState
        CType(_viewstate, IStateManager).TrackViewState()
    End Sub 'IStateManager.TrackViewState
    ' Implement the IsTrackingViewState method for this class  
    ' by calling the IsTrackingViewState method of the class's 
    ' private _viewstate property.  

    ReadOnly Property IsTrackingViewState() As Boolean Implements IStateManager.IsTrackingViewState
            Return CType(_viewstate, IStateManager).IsTrackingViewState
        End Get 
    End Property 

    ' Create a function that iterates through the view-state 
    ' values stored for this class and returns the 
    ' results as a string. 
    Public Function EnumerateViewState() As String 
        Dim keyName, keyValue As String 
        Dim result As String = [String].Empty
        Dim myStateItem As StateItem
        Dim myDictionaryEnumerator As IDictionaryEnumerator = _viewstate.GetEnumerator()
        While myDictionaryEnumerator.MoveNext()
            keyName = CStr(myDictionaryEnumerator.Key)
            myStateItem = CType(myDictionaryEnumerator.Value, StateItem)
            keyValue = CStr(myStateItem.Value)
            result = result + "<br>ViewState[" + keyName + "] = " + keyValue
        End While 
        Return result
    End Function 'EnumerateViewState
End Class 'MyItem 

.NET Framework

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

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

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

© 2014 Microsoft