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.

次の例では、 SaveViewState カスタム ASP.NET サーバーコントロールのメソッドをオーバーライドします。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 の場合は、 Text Web サーバーコントロールのプロパティを変更して Label 読み取り 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.