PageStatePersister PageStatePersister PageStatePersister PageStatePersister Class

Definition

Stellt die Basisfunktionen für die Dauerhaftigkeitsmechanismen für den Ansichtszustand in ASP.NET bereit.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
Vererbung
PageStatePersisterPageStatePersisterPageStatePersisterPageStatePersister
Abgeleitet

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ein PageStatePersister -Objekt erstellt wird, das den Ansichts-und Steuerelement Zustand auf dem Webserver speichert.The following code example demonstrates how to create a PageStatePersister object that saves view and control state on the Web server. Veranschaulicht, wie die-Methode Load und Save die-Methode zum Extrahieren und Speichern von Ansichts Zustandsinformationen überschrieben werden. StreamPageStatePersisterThe StreamPageStatePersister demonstrates how to override the Load and Save methods to extract and save view state information. Da die Zustands Persistenzmechanismen mit adaptiver Rendering und Client Funktionen in MyPageAdapter Zusammenhang stehen, wird die StreamPageStatePersister -Klasse bereitgestellt, um für eine ASP.NET-Anwendung zu aktivieren.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. Zum Schluss wird eine Browser Funktions Datei (. Browser) bereitgestellt, um MyPageAdapter den Adapter für eine bestimmte Klasse von Clients (in diesem Fall den Standard Webbrowser) zu aktivieren.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.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

Im folgenden Codebeispiel wird veranschaulicht, wie eine PageAdapter Klasse erstellt wird, die eine StreamPageStatePersisterInstanz von zurückgibt, die verwendet wird, um den Ansichts-und Steuerelement Zustand für eine ASP.NET-Webseite beizubehalten.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

Kompilieren Sie diese beiden Klassen in eine Assembly, die Sie verwenden können, um ein Beispiel mit der folgenden Compilerbefehlszeile auszuführen.Compile these two classes into an assembly that you can use to run a sample, using the following compiler command line. Stellen Sie sicher, dass sich die kompilierte Assembly im Verzeichnis "\bin" unterhalb des Anwendungs Stamms ASP.Net befindet.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
'

Um den MyPageAdapter Adapter zu aktivieren, müssen Sie zum Schluss ein Verzeichnis namens "Browsers" unterhalb des ASP.NET-Anwendungs Stamms erstellen und eine. Browser-Datei mit Konfigurationsinformationen einschließen.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. Das <refid> -Element in der Konfigurationsdatei gibt an, dass die Konfiguration die Werte überschreibt, die für den Standardbrowser in der standardmäßigen Browser Konfigurationsdatei angegeben sind.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. In diesem Beispiel MyPageAdapter wird für ASP.NET-Webseiten verwendet (in der Regel kein Adapter verwendet).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>  

Hinweise

Die HTTP-Anforderungen und-Antworten sind grundsätzlich zustandslos.The HTTP requests and responses are inherently stateless. Um Zustandsinformationen zwischen HTTP-Anforderungen zu erhalten, können ASP.net- Page Server Seiten den Status speichern.To maintain state information between HTTP requests, ASP.NET server pages can store Page state. Dieser Zustand, der als Ansichts Zustand bezeichnet wird, besteht aus Seiten-und Steuerelement Einstellungen und Daten, mit denen die Seite und die Steuerelemente so angezeigt werden, als wären Sie die gleichen, die der Benutzer beim letzten Roundtrip zum Server sah und interagiert hat.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. Es gibt mehrere Mechanismen, um den Ansichts Zustand zwischen aufeinander folgenden Anforderungen auf derselben Seite zu speichern.Several mechanisms exist to store view state between successive requests to the same page. Die abstrakte PageStatePersister -Klasse stellt die Basisklasse für diese Zustands Informationsspeicher-Mechanismen dar.The abstract PageStatePersister class represents the base class for these state information storage mechanisms.

Der standardmäßige Ansichts Zustands-Persistenzmechanismus in ASP.net besteht darin, die Zustandsinformationen als Base64-codierte Zeichenfolge in einem ausgeblendeten HTML "hidden"-Element (ein Element mit dem type Attribut auf) auf der Seite beizubehalten.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. Eine ASP.NET-Seite verwendet HiddenFieldPageStatePersister ein-Objekt, um diese Arbeit auszuführen IStateFormatter , wobei eine-Instanz zum Serialisieren und Deserialisieren von Objekt Zustandsinformationen verwendet wird.An ASP.NET page uses a HiddenFieldPageStatePersister object to perform this work, using an IStateFormatter instance to serialize and deserialize object state information. Alternativ können Sie den Ansichts Zustand für Ihre Seiten im Session Objekt auf dem Server speichern, indem Sie die SessionPageStatePersister -Klasse für mobile Clients mit eingeschränkter Bandbreite und Ressourcen verwenden.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 einigen Fällen können Sie die Ansichts Zustands Persistenz vollständig deaktivieren.In some cases, you might disable view state persistence altogether. Wenn Sie dies tun, ist das Ergebnis, dass Seiten und Steuerelemente, die auf Zustands Persistenz basieren, nicht ordnungsgemäß Verhalten.If you do this, the result is that sometimes pages and controls that rely on state persistence do not behave correctly. Weitere Informationen zur Seiten Status Verwaltung und zum Ansichts Zustand finden Sie unter ASP.net State Management Overview.For more information about page state management and view state, see ASP.NET State Management Overview.

Wenn Sie Steuerelemente schreiben, können Sie Zustandsinformationen für die Steuerelemente im ViewState Wörterbuch speichern, bei dem es sich um ein StateBag -Objekt handelt.If you are writing controls, you can store state information for the controls in the ViewState dictionary, which is a StateBag object. Ein Entwickler würde den Steuerelement Zustand über die ControlState -Eigenschaft abrufen.A developer would retrieve the control state through the ControlState property. Sie weisen der ViewState -Eigenschaft Schlüssel und Werte zu, und Page das-Objekt serialisiert die Zustandsinformationen zwischen Anforderungen.You assign keys and values to the ViewState property, and the Page object serializes the state information between requests. Überschreiben Sie die-Methode und die LoadViewState - SaveViewState Methode, um eine benutzerdefinierte Zustands Behandlung in Ihrem-To perform custom state handling in your control, override the LoadViewState and SaveViewState methods. Alle Zustandsinformationen, die in diesem Wörterbuch gespeichert werden, gehen verloren, wenn der Ansichts Zustand von einem Seiten Entwickler deaktiviert wird.Any state information that is stored in this dictionary is lost when view state is disabled by a page developer. Um dies zu vermeiden, können Sie in ASP.NET Version 2,0 wichtige Zustandsinformationen in einem separaten Objekt, dem sogenannten Steuerungs Zustand, speichern.To mitigate this, in ASP.NET version 2.0 you can store critical state information in a separate object, called control state. Das Steuerelement Zustands Objekt ist nicht betroffen, wenn der Ansichts Zustand von einem Seiten Entwickler deaktiviert wird.The control state object is not affected when view state is disabled by a page developer. Das Speichern von Zustandsinformationen im Steuerungs Zustands Objekt erfordert, dass das Steuer LoadControlState Element SaveControlState die-Methode und die-Methode überschreibt und dass das Steuerelement registriert wird, um Zustandsinformationen bei jedem Initialisieren des Steuer Elements im Steuerelement Zustand zu speichern.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. Sie können ein Steuerelement registrieren, um den Steuerungs Zustand zu OnInit verwenden, indem Sie RegisterRequiresControlState die-Methode überschreiben und die-MethodeYou can register a control to use control state by overriding the OnInit method and calling the RegisterRequiresControlState method. Weitere Informationen zum Verwenden der Eigenschaft ViewState und des Steuerungs Zustands beim Entwickeln von Steuerelementen finden Sie unter entwickeln von benutzerdefinierten ASP.NET-Server Steuerelementen.For more information about using the ViewState property and control state when developing controls, see Developing Custom ASP.NET Server Controls.

Um den Ansichts Zustand auf Clients beizubehalten, die die vorhandenen Ansichts Zustands-Persistenzmechanismen PageStatePersister nicht unterstützen, können Sie die-Klasse erweitern, um Ihre eigenen Ansichts Zustands-persistenzmethoden einzuführen, und Sie können Seiten Adapter zum Konfigurieren Ihrer ASP.net zum Verwenden verschiedener Ansichts Zustands-Persistenzmechanismen basierend auf dem Typ des Clients, für den eine Seite verarbeitet wird.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. Klassen, die von der PageStatePersister -Klasse abgeleitet werden, Save müssen die abstrakte Methode überschreiben, um den Ansichts Zustand und den Steuerelement Load Zustand im persistenzmedium zu speichern, und die-Methode überschreibenClasses 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. Wenn Sie den Ansichts Zustand und den Steuerelement Zustand in eine Zeichenfolge serialisieren müssen, IStateFormatter können Sie das Objekt verwenden, StateFormatter auf das mithilfe der-Eigenschaft zugegriffen wird.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. Sie serialisiert und deserialisiert Objekt Zustandsinformationen effizient in eine Base64-codierte Zeichenfolge.It efficiently serializes and deserializes object state information to a Base64-encoded string. Sie können die StateFormatter -Eigenschaft auch überschreiben, um einen eigenen objektstatusserialisierungsmechanismus bereitzustellen.You can also override the StateFormatter property to supply your own object state serialization mechanism.

Konstruktoren

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

Initialisiert eine neue Instanz der PageStatePersister-Klasse.Initializes a new instance of the PageStatePersister class.

Eigenschaften

ControlState ControlState ControlState ControlState

Ruft ein Objekt ab, das die Daten darstellt, die Steuerelemente, die sich im aktuellen Page-Objekt befinden, über HTTP-Anforderungen an den Webserver hinweg beibehalten, oder legt dieses fest.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

Ruft das Page-Objekt fest, für das der Dauerhaftigkeitsmechanismus für den Ansichtszustand erstellt wird, oder legt dieses fest.Gets or sets the Page object that the view state persistence mechanism is created for.

StateFormatter StateFormatter StateFormatter StateFormatter

Ruft ein IStateFormatter-Objekt ab, das bei Aufrufen der ViewState-Methode und der ControlState-Methode zum Serialisieren und Deserialisieren der in der Save()-Eigenschaft und der Load()-Eigenschaft befindlichen Zustandsinformationen verwendet wird.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

Ruft ein Objekt ab, das die Daten darstellt, die Steuerelemente, die sich im aktuellen Page-Objekt befinden, über HTTP-Anforderungen an den Webserver hinweg beibehalten, oder legt dieses fest.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.

Methoden

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

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

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

Fungiert als Standardhashfunktion.Serves as the default hash function.

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

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

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

Von abgeleiteten Klassen zum Deserialisieren und Laden beibehaltener Zustandsinformationen überschrieben, wenn ein Page-Objekt seine Steuerelementhierarchie initialisiert.Overridden by derived classes to deserialize and load persisted state information when a Page object initializes its control hierarchy.

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

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

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

Von abgeleiteten Klassen zum Serialisieren beibehaltener Zustandsinformationen überschrieben, wenn ein Page-Objekt aus dem Speicher entladen wird.Overridden by derived classes to serialize persisted state information when a Page object is unloaded from memory.

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

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Gilt für:

Siehe auch