Assembly : System.Web (dans system.web.dll)
NotesL'interface IStateFormatter définit les méthodes qu'un type peut implémenter pour sérialiser et désérialiser l'état qu'un contrôle serveur Web ASP.NET maintient dans sa propriété ViewState. Cette infrastructure est utilisée par des classes qui dérivent de la classe PageStatePersister pour maintenir l'état d'une page ASP.NET entre des demandes. Par défaut, l'état de la page ASP.NET est sérialisé et désérialisé par une instance de la classe ObjectStateFormatter ; toutefois, les développeurs de sites et d'adaptateurs peuvent implémenter l'interface IStateFormatter sur leurs propres types pour exécuter ce travail.
Pour plus d'informations sur la gestion de l'état et l'état d'affichage du contrôle serveur Web, consultez Vue d'ensemble de la gestion d'état ASP.NET et Contrôles serveur Web dynamiques et état d'affichage.
ExempleL'exemple de code suivant montre comment créer un objet PageStatePersister qui enregistre l'état d'affichage et de contrôle dans un flux du serveur Web. La classe StreamPageStatePersister montre comment substituer les méthodes Load et Save pour extraire et enregistrer des informations d'état de page. Ces méthodes utilisent l'interface IStateFormatter héritée de la classe PageStatePersister pour sérialiser et désérialiser l'état d'affichage. Cet exemple de code fait partie d'un plus grand exemple fourni pour la classe PageStatePersister.
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
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; } } }
Plates-formesWindows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ