Control.SaveViewState 方法

定义

保存将页面回发到服务器之后发生的所有服务器控件视图状态更改。

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 存储提供程序

适用于

另请参阅