Control.SaveControlState 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
保存自页面发回服务器后发生的任何服务器控件状态更改。
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 状态管理概述。