Control.SaveViewState メソッド


ページがサーバーにポスト バックされた時間以降に発生した、サーバー コントロールのビューステートの変更を保存します。Saves any server control view-state changes that have occurred since the time the page was posted back to the server.

 virtual System::Object ^ SaveViewState();
protected virtual object SaveViewState ();
abstract member SaveViewState : unit -> obj
override this.SaveViewState : unit -> obj
Protected Overridable Function SaveViewState () As Object


サーバー コントロールの現在のビューステートを返します。Returns the server control's current view state. コントロールに関連付けられているビューステートがない場合、メソッドは null を返します。If there is no view state associated with the control, this method returns null.

次の例では、カスタム ASP.NET サーバーコントロールの SaveViewState メソッドをオーバーライドします。The following example overrides the SaveViewState method in a custom ASP.NET server control. このメソッドが呼び出されると、コントロールに子コントロールがあるかどうか、およびそれを含む Page オブジェクトがポストバックの結果であるかどうかが判断されます。When this method is invoked, it determines whether the control has any child controls and whether the containing Page object is the result of a postback. 両方とも true の場合、Label Web サーバーコントロールの Text プロパティが Custom Control Has Saved Stateを読み取るように変更されます。If both are true, it changes the Text property of a Label Web server control to read Custom Control Has Saved State. 次に、コントロールのビューステートを allStatesという名前のオブジェクトの配列として保存します。It then saves the view state of the control as an array of objects, named 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


ビューステートは、サーバーコントロールのプロパティの値を累積したものです。View state is the accumulation of the values of a server control's properties. これらの値は、サーバーコントロールの ViewState プロパティ (StateBag クラスのインスタンス) に自動的に配置されます。These values are automatically placed in the server control's ViewState property, which is an instance of the StateBag class. このプロパティの値は、サーバーコントロールのライフサイクルの状態の保存ステージの後に文字列オブジェクトに保存されます。This property's value is then persisted to a string object after the save state stage of the server control life cycle. 詳細については、「 ASP.NET Page ライフサイクルの概要」を参照してください。For more information, see ASP.NET Page Life Cycle Overview.

ビューステートが保存されると、この文字列オブジェクトは、HTML HIDDEN 要素に格納されている変数としてクライアントに返されます。When view state is saved, this string object is returned to the client as a variable that is stored in an HTML HIDDEN element. カスタムビューステートを使用してカスタムサーバーコントロールを作成する場合、ビューステートは、SaveViewState および LoadViewState メソッドを使用して明示的に管理できます。When you author a custom server control with a custom view state, the view state can be managed explicitly with the SaveViewState and LoadViewState methods. 詳細については、「 ASP.NET State Management の概要」を参照してください。For more information, see ASP.NET State Management Overview. カスタムセッション状態プロバイダーの実装の詳細については、「セッション状態ストアプロバイダーの実装」を参照してください。For information on implementing a custom session-state provider, see Implementing a Session-State Store Provider.