PageStatePersister PageStatePersister PageStatePersister PageStatePersister Class

定義

ASP.NET ビューステート永続化機構の基本機能を提供します。Provides the base functionality for ASP.NET view state persistence mechanisms.

public ref class PageStatePersister abstract
public abstract class PageStatePersister
type PageStatePersister = class
Public MustInherit Class PageStatePersister
継承
PageStatePersisterPageStatePersisterPageStatePersisterPageStatePersister
派生

次のコード例では、Web サーバー PageStatePersisterにビューとコントロールの状態を保存するオブジェクトを作成する方法を示します。The following code example demonstrates how to create a PageStatePersister object that saves view and control state on the Web server. StreamPageStatePersister 、メソッドLoadSaveメソッドをオーバーライドして、ビューステート情報を抽出して保存する方法を示しています。The StreamPageStatePersister demonstrates how to override the Load and Save methods to extract and save view state information. 状態の永続MyPageAdapter StreamPageStatePersister化メカニズムはアダプティブレンダリングとクライアント機能に関連しているため、ASP.NET アプリケーションのをアクティブ化するためにクラスが用意されています。Because the state persistence mechanisms are related to adaptive rendering and client capabilities, the MyPageAdapter class is provided to activate the StreamPageStatePersister for an ASP.NET application. 最後に、ブラウザー機能 (ブラウザー) ファイルが用意されておりMyPageAdapter 、特定のクラスのクライアント (この場合は既定の Web ブラウザー) 用にアダプターを有効にします。Finally, a browser capabilities (.browser) file is provided to enable the MyPageAdapter adapter for a specific class of clients (in this case, the default Web browser).

namespace Samples.AspNet.CS
{

    using System;
    using System.IO;
    using System.Security.Permissions;
    using System.Web;
    using System.Web.UI;

    //
    // The StreamPageStatePersister is an example view state
    // persistence mechanism that persists view and control
    // state on the Web server.
    //
    [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]
    public class StreamPageStatePersister : PageStatePersister
    {

        public StreamPageStatePersister(Page page)
            : base(page)
        {
        }
        //
        // Load ViewState and ControlState.
        //
        public override void Load()
        {
            Stream stateStream = GetSecureStream();

            // Read the state string, using the StateFormatter.
            StreamReader reader = new StreamReader(stateStream);

            IStateFormatter formatter = this.StateFormatter;
            string fileContents = reader.ReadToEnd();

            // Deserilize returns the Pair object that is serialized in
            // the Save method.
            Pair statePair = (Pair)formatter.Deserialize(fileContents);

            ViewState = statePair.First;
            ControlState = statePair.Second;
            reader.Close();
            stateStream.Close();
        }
        //
        // Persist any ViewState and ControlState.
        //
        public override void Save()
        {

            if (ViewState != null || ControlState != null)
            {
                if (Page.Session != null)
                {
                    Stream stateStream = GetSecureStream();

                    StreamWriter writer = new StreamWriter(stateStream);

                    IStateFormatter formatter = this.StateFormatter;
                    Pair statePair = new Pair(ViewState, ControlState);

                    // Serialize the statePair object to a string.
                    string serializedState = formatter.Serialize(statePair);

                    writer.Write(serializedState);
                    writer.Close();
                    stateStream.Close();
                }
                else
                    throw new InvalidOperationException("Session needed for StreamPageStatePersister.");
            }
        }
        // Return a secure Stream for your environment.
        private Stream GetSecureStream()
        {
            // You must provide the implementation to build
            // a secure Stream for your environment.
            return null;
        }
    }
}
Imports System
Imports System.IO
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI

Namespace Samples.AspNet.VB

    ' The StreamPageStatePersister is an example view state
    ' persistence mechanism that persists view and control
    ' state on the Web server.
    '
    <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
    Public Class StreamPageStatePersister
        Inherits PageStatePersister


        Public Sub New(ByVal page As Page)
            MyBase.New(page)
        End Sub 'New

        '
        ' Load ViewState and ControlState.
        '
        Public Overrides Sub Load()

            Dim stateStream As Stream
            stateStream = GetSecureStream()

            ' Read the state string, using the StateFormatter.
            Dim reader As New StreamReader(stateStream)

            Dim serializedStatePair As String
            serializedStatePair = reader.ReadToEnd
            Dim statePair As Pair

            Dim formatter As IStateFormatter
            formatter = Me.StateFormatter

            ' Deserilize returns the Pair object that is serialized in
            ' the Save method.      
            statePair = CType(formatter.Deserialize(serializedStatePair), Pair)

            ViewState = statePair.First
            ControlState = statePair.Second
            reader.Close()
            stateStream.Close()
        End Sub ' Load

        '
        ' Persist any ViewState and ControlState.
        '
        Public Overrides Sub Save()

            If Not (ViewState Is Nothing) OrElse Not (ControlState Is Nothing) Then
                If Not (Page.Session Is Nothing) Then

                    Dim stateStream As Stream
                    stateStream = GetSecureStream()

                    ' Write a state string, using the StateFormatter.
                    Dim writer As New StreamWriter(stateStream)

                    Dim formatter As IStateFormatter
                    formatter = Me.StateFormatter

                    Dim statePair As New Pair(ViewState, ControlState)

                    Dim serializedState As String
                    serializedState = formatter.Serialize(statePair)

                    writer.Write(serializedState)
                    writer.Close()
                    stateStream.Close()
                Else
                    Throw New InvalidOperationException("Session needed for StreamPageStatePersister.")
                End If
            End If
        End Sub 'Save
        ' Return a secure Stream for your environment.
        Private Function GetSecureStream() As Stream
            ' You must provide the implementation to build
            ' a secure Stream for your environment.
            Return Nothing
        End Function
    End Class
End Namespace

次のコード例は、のPageAdapter StreamPageStatePersisterインスタンスを返すクラスを作成する方法を示しています。これは、ASP.NET Web ページのビューとコントロールの状態を保持するために使用されます。The following code example demonstrates how to create a PageAdapter class that returns an instance of StreamPageStatePersister, which is used to persist view and control state for an ASP.NET Web page.

namespace Samples.AspNet.CS {

    using System.Security.Permissions;
    using System.Web;
    using System.Web.UI;

    [AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)]
    public class MyPageAdapter : System.Web.UI.Adapters.PageAdapter {

        public override PageStatePersister GetStatePersister() {
            return new Samples.AspNet.CS.StreamPageStatePersister(Page);
        }
    }
}
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI

Namespace Samples.AspNet.VB

    <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
    Public Class MyPageAdapter
       Inherits System.Web.UI.Adapters.PageAdapter


       Public Overrides Function GetStatePersister() As PageStatePersister
          Return New Samples.AspNet.VB.StreamPageStatePersister(Page)
       End Function 'GetStatePersister

    End Class 'MyPageAdapter

End Namespace

次のコンパイラコマンドラインを使用して、サンプルを実行するために使用できるアセンブリにこれらの2つのクラスをコンパイルします。Compile these two classes into an assembly that you can use to run a sample, using the following compiler command line. コンパイルされたアセンブリが、ASP.NET アプリケーションルートの下の \Bin ディレクトリにあることを確認します。Ensure that the compiled assembly is in the \Bin directory underneath the ASP.NET application root.

// C:\>csc /t:library /out:C:\inetpub\wwwroot\bin\Samples.AspNet.CS.dll MyPageAdapter.cs TextFilePageStatePersister.cs
//
// C:\>
' C:\>vbc /t:library /out:C:\inetpub\wwwroot\bin\Samples.AspNet.VB.dll MyPageAdapter.vb TextFilePageStatePersister.vb
'

最後に、 MyPageAdapterアダプターを有効にするには、ASP.NET アプリケーションルートの下にブラウザーという名前のディレクトリを作成し、構成情報を含むブラウザーファイルをインクルードする必要があります。Finally, to enable the MyPageAdapter adapter, you must create a directory named Browsers underneath the ASP.NET application root, and include a .browser file with configuration information. 構成<refid>ファイルの要素は、既定のブラウザー構成ファイルの既定のブラウザーに対して指定された値を構成がオーバーライドすることを示します。The <refid> element in the configuration file indicates that the configuration overrides the values specified for the default browser in the Default.browser configuration file. この例ではMyPageAdapter 、ASP.NET Web ページ (通常、アダプターは使用されません) に対してを使用します。In this example, MyPageAdapter is used for ASP.NET Web pages (where normally no adapter is used).

<browsers>  
    <browser refid="Default" >  
        <controlAdapters>  
            <adapter   
                controlType="System.Web.UI.Page"                              
                adapterType="Samples.AspNet.CS.MyPageAdapter" />  
        </controlAdapters>  
    </browser>  
</browsers>  

注釈

HTTP 要求と応答は本質的にステートレスです。The HTTP requests and responses are inherently stateless. HTTP 要求間の状態情報を保持するために、ASP.NET Pageサーバーページは状態を格納できます。To maintain state information between HTTP requests, ASP.NET server pages can store Page state. この状態は、ビューステートと呼ばれ、ページおよびコントロールの設定とデータで構成されています。ページとコントロールは、ユーザーが最後にサーバーに対して行ったラウンドトリップで見て操作したものと同じように見えます。This state, called view state, consists of page and control settings and data that make the page and controls appear as if they are the same ones that the user saw and interacted with on their last round trip to the server. 複数のメカニズムがあり、同じページに対する連続した要求の間にビューステートを格納します。Several mechanisms exist to store view state between successive requests to the same page. 抽象PageStatePersisterクラスは、これらの状態情報格納機構の基本クラスを表します。The abstract PageStatePersister class represents the base class for these state information storage mechanisms.

ASP.NET の既定のビューステート永続化機構は、ページ上の非表示の HTML 要素 ( type属性がに"hidden"設定されている要素) で、Base64 でエンコードされた文字列として状態情報を保持することです。The default view state persistence mechanism in ASP.NET is to maintain the state information as a Base64-encoded string in a hidden HTML element (an element with the type attribute set to "hidden") on the page. ASP.NET ページでは、 HiddenFieldPageStatePersisterオブジェクトを使用しIStateFormatterてこの作業を実行し、インスタンスを使用してオブジェクトの状態情報をシリアル化および逆シリアル化します。An ASP.NET page uses a HiddenFieldPageStatePersister object to perform this work, using an IStateFormatter instance to serialize and deserialize object state information. または、帯域幅とリソースが限られているモバイルSessionクライアントのSessionPageStatePersisterクラスを使用して、ページのビューステートをサーバーのオブジェクトに格納することもできます。Alternately, you can store the view state for your pages in the Session object on the server using the SessionPageStatePersister class for mobile clients with limited bandwidth and resources. 場合によっては、ビューステートの永続化を完全に無効にすることがあります。In some cases, you might disable view state persistence altogether. これを行うと、状態の永続化に依存するページやコントロールが正しく動作しなくなることがあります。If you do this, the result is that sometimes pages and controls that rely on state persistence do not behave correctly. ページ状態管理とビューステートの詳細については、「 ASP.NET State management の概要」を参照してください。For more information about page state management and view state, see ASP.NET State Management Overview.

コントロールを作成する場合は、 ViewState StateBagオブジェクトであるディクショナリにコントロールの状態情報を格納できます。If you are writing controls, you can store state information for the controls in the ViewState dictionary, which is a StateBag object. 開発者は、プロパティをControlState使用してコントロールの状態を取得します。A developer would retrieve the control state through the ControlState property. ViewStateプロパティにキーと値を割り当てます。オブジェクトはPage 、要求間で状態情報をシリアル化します。You assign keys and values to the ViewState property, and the Page object serializes the state information between requests. コントロールでカスタムの状態処理を実行するにはLoadViewStateSaveViewStateメソッドとメソッドをオーバーライドします。To perform custom state handling in your control, override the LoadViewState and SaveViewState methods. このディクショナリに格納されている状態情報は、ページ開発者によってビューステートが無効にされていると失われます。Any state information that is stored in this dictionary is lost when view state is disabled by a page developer. この問題を軽減するために、ASP.NET バージョン2.0 では、重大な状態情報を制御状態と呼ばれる別のオブジェクトに格納できます。To mitigate this, in ASP.NET version 2.0 you can store critical state information in a separate object, called control state. コントロールの状態オブジェクトは、ページ開発者によってビューステートが無効にされている場合には影響を受けません。The control state object is not affected when view state is disabled by a page developer. 状態情報をコントロール状態オブジェクトに格納するには、コントロールがLoadControlStateメソッドSaveControlStateとメソッドをオーバーライドし、コントロールが初期化されるたびに状態情報をコントロール状態に格納するようにコントロールを登録する必要があります。Storing state information in the control state object requires that the control override the LoadControlState and SaveControlState methods and that the control be registered to store state information in control state every time the control is initialized. OnInitメソッドをオーバーライドし、 RegisterRequiresControlStateメソッドを呼び出すことによって、コントロールの状態を使用するようにコントロールを登録できます。You can register a control to use control state by overriding the OnInit method and calling the RegisterRequiresControlState method. コントロールの開発時にViewStateプロパティとコントロールの状態を使用する方法の詳細については、「カスタム ASP.NET サーバーコントロールの開発」を参照してください。For more information about using the ViewState property and control state when developing controls, see Developing Custom ASP.NET Server Controls.

既存のビューステート永続化機構をサポートできないクライアントのビューステートを維持するにはPageStatePersister 、クラスを拡張して独自のビューステート永続化メソッドを導入し、ページアダプターを使用して ASP.NET アプリケーションを構成することができます。ページを提供するクライアントの種類に基づいて、さまざまなビューステートの永続化メカニズムを使用します。To maintain view state on clients that cannot support the existing view state persistence mechanisms, you can extend the PageStatePersister class to introduce your own view state persistence methods, and you can use page adapters to configure your ASP.NET application to use different view state persistence mechanisms based on the type of client to which a page is served. PageStatePersisterクラスから派生するクラスは、抽象Saveメソッドをオーバーライドして、ビューステートとコントロールの状態を永続メディアに格納しLoad 、メソッドをオーバーライドして抽出する必要があります。Classes that derive from the PageStatePersister class must override the abstract Save method to store view state and control state in the persistence medium, and override the Load method to extract it. ビューステートとコントロールの状態を文字列にシリアル化する必要がある場合は、 IStateFormatter StateFormatterプロパティを使用してアクセスするオブジェクトを使用できます。If you need to serialize view state and control state to a string, you can use the IStateFormatter object that is accessed using the StateFormatter property. オブジェクトの状態情報を、Base64 でエンコードされた文字列に効率的にシリアル化および逆シリアル化します。It efficiently serializes and deserializes object state information to a Base64-encoded string. また、プロパティをオーバーライドStateFormatterして、独自のオブジェクト状態のシリアル化機構を提供することもできます。You can also override the StateFormatter property to supply your own object state serialization mechanism.

コンストラクター

PageStatePersister(Page) PageStatePersister(Page) PageStatePersister(Page) PageStatePersister(Page)

PageStatePersister クラスの新しいインスタンスを初期化します。Initializes a new instance of the PageStatePersister class.

プロパティ

ControlState ControlState ControlState ControlState

オブジェクトを取得または設定します。このオブジェクトは、現在の Page オブジェクトによって格納されているコントロールが Web サーバーへの HTTP 要求間で永続化するために使用しているデータを表します。Gets or sets an object that represents the data that controls contained by the current Page object use to persist across HTTP requests to the Web server.

Page Page Page Page

ビューステート永続化機構が作成される対象の Page オブジェクトを取得または設定します。Gets or sets the Page object that the view state persistence mechanism is created for.

StateFormatter StateFormatter StateFormatter StateFormatter

IStateFormatter メソッドおよび ViewState メッソドへの呼び出しで、ControlState プロパティおよび Save() プロパティに格納されている状態情報のシリアル化と逆シリアル化に使用する Load() オブジェクトを取得します。Gets an IStateFormatter object that is used to serialize and deserialize the state information contained in the ViewState and ControlState properties during calls to the Save() and Load() methods.

ViewState ViewState ViewState ViewState

オブジェクトを取得または設定します。このオブジェクトは、現在の Page オブジェクトによって格納されているコントロールが Web サーバーへの HTTP 要求間で永続化するために使用しているデータを表します。Gets or sets an object that represents the data that controls contained by the current Page object use to persist across HTTP requests to the Web server.

メソッド

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
Load() Load() Load() Load()

派生クラスによってオーバーライドされ、Page オブジェクトが自身のコントロール階層を初期化するときに、永続化された状態情報を逆シリアル化して読み込みます。Overridden by derived classes to deserialize and load persisted state information when a Page object initializes its control hierarchy.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
Save() Save() Save() Save()

派生クラスによってオーバーライドされ、Page オブジェクトがメモリから読み出されるときに、永続化された状態情報をシリアル化します。Overridden by derived classes to serialize persisted state information when a Page object is unloaded from memory.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

適用対象

こちらもご覧ください