IStateFormatter インターフェイス
アセンブリ: System.Web (system.web.dll 内)


IStateFormatter インターフェイスは、ASP.NET Web サーバー コントロールがその ViewState プロパティに保持する状態をシリアル化および逆シリアル化するために型が実装できるメソッドを定義します。このインフラストラクチャは、PageStatePersister から派生するクラスが要求間で ASP.NET ページの状態を保持するために使用されます。既定では、ASP.NET ページの状態は、ObjectStateFormatter クラスのインスタンスによってシリアル化および逆シリアル化されますが、サイトやアダプタの開発者は、独自の型に IStateFormatter インターフェイスを実装して、この作業を実行することもできます。
Web サーバー コントロールの状態管理とビューステートの詳細については、「ASP.NET の状態管理の概要」および「動的な Web サーバー コントロールとビューステート」を参照してください。

Web サーバーのストリームにビューとコントロールの状態を保存する PageStatePersister オブジェクトを作成する方法を次のコード例に示します。StreamPageStatePersister クラスは、Load メソッドおよび Save メソッドをオーバーライドし、ページの状態情報を抽出して保存する方法を示しています。これらのメソッドは、PageStatePersister クラスから継承した IStateFormatter インターフェイスを使用して、ビューステートをシリアル化および逆シリアル化します。このコード例は、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; } } }

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IStateFormatter メソッド

名前 | 説明 | |
---|---|---|
![]() | Deserialize | オブジェクトの状態グラフをそのシリアル化された文字列の形式から逆シリアル化します。 |
![]() | Serialize | ASP.NET Web サーバー コントロールの状態を文字列形式にシリアル化します。 |

IStateFormatter メンバ
- IStateFormatterのページへのリンク