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