Control.SaveControlState 方法

定义

保存自页面发回服务器后发生的任何服务器控件状态更改。

protected public:
 virtual System::Object ^ SaveControlState();
protected internal virtual object SaveControlState();
abstract member SaveControlState : unit -> obj
override this.SaveControlState : unit -> obj
Protected Friend Overridable Function SaveControlState () As Object

返回

返回服务器控件的当前状态。 如果没有与控件关联的状态,此方法将 null返回。

示例

下面的代码示例替代自定义 ASP.NET 控件中的 SaveControlState 方法。 调用此方法时,它会确定内部属性 currentIndex 是否设置为非默认值,如果是,则保存该值以控制状态。

重写该方法 OnInit 以调用 RegisterRequiresControlState 方法以 Page 指示自定义控件使用控件状态。

public class Sample : Control {
    private int currentIndex = 0;
   
    protected override void OnInit(EventArgs e) {
        Page.RegisterRequiresControlState(this);
        base.OnInit(e);
    }

    protected override object SaveControlState() {
        return currentIndex != 0 ? (object)currentIndex : null;
    }

    protected override void LoadControlState(object state) {
        if (state != null) {
            currentIndex = (int)state;
        }
    }
}
Class Sample
  Inherits Control
  
  Dim currentIndex As Integer
  
      Protected Overrides Sub OnInit(ByVal e As EventArgs)
          Page.RegisterRequiresControlState(Me)
          currentIndex = 0
          MyBase.OnInit(e)
      End Sub
  
      Protected Overrides Function SaveControlState() As Object
          If currentIndex <> 0 Then
              Return CType(currentIndex, Object)
          Else
              Return Nothing
          End If
      End Function
  
      Protected Overrides Sub LoadControlState(ByVal state As Object)
          If (state <> Nothing) Then
              currentIndex = CType(state, Integer)
          End If
      End Sub
  
End Class

注解

使用该方法 SaveControlState 保存特定控件操作所需的状态信息。 此控件状态数据与控件的视图状态数据分开存储。

使用控件状态的自定义控件必须在保存控件状态之前调用 RegisterRequiresControlState 该方法 Page

继承者说明

保存控件状态时,字符串对象将作为存储在 HTML HIDDEN 元素中的变量返回到客户端。 重写此方法以提取控件中使用的状态信息。

控件状态适用于少量关键数据,例如页面索引或关键字。 对大量数据使用控制状态可能会对页面性能产生不利影响。 有关详细信息,请参阅 ASP.NET 状态管理概述

适用于

另请参阅