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
。
示例
下面的代码示例替代 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 状态管理概述。