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

示例

下面的代码示例替代 SaveControlState 自定义 ASP.NET 控件中的 方法。 调用此方法时,它会确定内部属性 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使用 方法保存操作特定控件所需的状态信息。 此控件状态数据与控件的视图状态数据分开存储。

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

继承者说明

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

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

适用于

另请参阅