次の方法で共有


Control.SaveViewState メソッド

ページがサーバーにポスト バックされた時間以降に発生した、サーバー コントロールのビューステートの変更を保存します。

名前空間: System.Web.UI
アセンブリ: System.Web (system.web.dll 内)

構文

'宣言
Protected Overridable Function SaveViewState As Object
'使用
Dim returnValue As Object

returnValue = Me.SaveViewState
protected virtual Object SaveViewState ()
protected:
virtual Object^ SaveViewState ()
protected Object SaveViewState ()
protected function SaveViewState () : Object
適用できません。

戻り値

サーバー コントロールの現在のビューステートを返します。コントロールに関連付けられているビューステートがない場合、メソッドは null 参照 (Visual Basic では Nothing) を返します。

解説

ビューステートは、サーバー コントロールのプロパティ値の累積によって表されます。これらの値は、StateBag クラスのインスタンスである、サーバー コントロールの ViewState プロパティに自動的に配置されます。このプロパティの値は、この後、サーバー コントロールの有効期間が保存状態の段階を終えても、文字列オブジェクトに永続化されます。詳細については、「ASP.NET ページのライフ サイクルの概要」を参照してください。

ビューステートを保存すると、この文字列オブジェクトは HTML HIDDEN 要素に格納された変数としてクライアントに返されます。カスタム ビューステートを使用してカスタム サーバー コントロールを作成する場合、SaveViewState メソッドおよび LoadViewState メソッドを使用して、ビューステートを明示的に管理できます。詳細については、「ASP.NET の状態管理」を参照してください。カスタム セッション状態プロバイダの実装方法の詳細については、「セッション状態ストア プロバイダの実装」を参照してください。

使用例

カスタム ASP.NET サーバー コントロールの SaveViewState メソッドをオーバーライドする例を次に示します。このメソッドは、コントロールに子コントロールがあるかどうか、および配置先 Page オブジェクトがポストバックの結果なのかどうかを確認します。両方とも true の場合は、Label Web サーバー コントロールの Text プロパティを変更して Custom Control Has Saved State を読み取ります。そして、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
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 Object SaveViewState()
{
    // Change Text Property of Label when this function is invoked.
    if (HasControls() && get_Page().get_IsPostBack()) {
        ((Label)(get_Controls().get_Item(0))).set_Text(
            "Custom Control Has Saved State");
    }

    // Save State as a cumulative array of objects.
    Object baseState = super.SaveViewState();
    String userText = get_UserText();
    String passwordText = get_PasswordText();
    Object allStates[] = new Object[3];
    allStates.set_Item(0, baseState);
    allStates.set_Item(1, userText);
    allStates.set_Item(2, get_PasswordText());
    return allStates;
} //SaveViewState

プラットフォーム

Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

バージョン情報

.NET Framework

サポート対象 : 3.0,2.0,1.1,1.0

参照

関連項目

Control クラス
Control メンバ
System.Web.UI 名前空間
LoadViewState
ViewState
StateBag

その他の技術情報

ASP.NET の状態管理
セッション状態ストア プロバイダの実装