Control.SaveViewState 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
保存将页面回发到服务器之后发生的所有服务器控件视图状态更改。
protected:
virtual System::Object ^ SaveViewState();
protected virtual object SaveViewState ();
abstract member SaveViewState : unit -> obj
override this.SaveViewState : unit -> obj
Protected Overridable Function SaveViewState () As Object
返回
返回服务器控件的当前视图状态。 如果没有与该控件关联的视图状态,则此方法返回 null
。
示例
以下示例重写 SaveViewState 自定义 ASP.NET 服务器控件中的 方法。 调用此方法时,它将确定控件是否具有任何子控件,以及包含 Page 的对象是否是回发的结果。 如果两者都为 true,则会将 Web 服务器控件的 Label 属性更改为Text读取 Custom Control Has Saved State
。 然后,它将控件的视图状态保存为名为 allStates
的对象数组。
protected override object SaveViewState()
{ // Change Text Property of Label when this function is invoked.
if(HasControls() && (Page.IsPostBack))
{
((Label)(Controls[0])).Text = "Custom Control Has Saved State";
}
// Save State as a cumulative array of objects.
object baseState = base.SaveViewState();
string userText = UserText;
string passwordText = PasswordText;
object[] allStates = new object[3];
allStates[0] = baseState;
allStates[1] = userText;
allStates[2] = PasswordText;
return allStates;
}
Protected Overrides Function SaveViewState() As Object
' Change Text Property of Label when this function is invoked.
If HasControls() And Page.IsPostBack Then
CType(Controls(0), Label).Text = "Custom Control Has Saved State"
End If
' Save State as a cumulative array of objects.
Dim baseState As Object = MyBase.SaveViewState()
Dim _userText As String = UserText
Dim _passwordText As String = PasswordText
Dim allStates(3) As Object
allStates(0) = baseState
allStates(1) = _userText
allStates(2) = PasswordText
Return allStates
End Function
注解
视图状态是服务器控件属性的值的累积。 这些值会自动放置在服务器控件的 ViewState 属性中,该属性是 类的 StateBag 实例。 然后,在服务器控件生命周期的保存状态阶段之后,此属性的值将保存到字符串对象中。 有关详细信息,请参阅 ASP.NET 页生命周期概述。
保存视图状态时,此字符串对象作为存储在 HTML HIDDEN
元素中的变量返回到客户端。 创作具有自定义视图状态的自定义服务器控件时,可以使用 和 LoadViewState 方法显式SaveViewState管理视图状态。 有关详细信息,请参阅 ASP.NET 状态管理概述。 有关实现自定义会话状态提供程序的信息,请参阅 实现 Session-State 存储提供程序。