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

返回

Object

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

示例

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

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

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 保存特定控件操作所需的状态信息。 此控件状态数据与控件的视图状态数据分开存储。

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

继承者说明

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

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

适用于

另请参阅