HiddenFieldPageStatePersister クラス
アセンブリ: System.Web (system.web.dll 内)


ASP.NET ページでは、Web ページの処理および送信に必要な本質的に状態のない HTTP 要求および応答間で Page の状態を格納できます。この状態を "ビューステート" といいます。ページとそのコントロールのビューステートを格納する際に使用される既定の機構は、Web サーバーからクライアントに送信されるページに含まれる 1 つ以上の <hidden> HTML フィールドにあります。Page クラスは、HiddenFieldPageStatePersister クラスを使用して、この作業を実行できます。HiddenFieldPageStatePersister が PageStatePersister クラスの Save メソッドおよび Load メソッドを実装するため、Page は、Web クライアント上の "__VIEWSTATE" という名前の付いた <hidden> HTML 要素に状態を格納できます。クライアントが Web サーバーから同じページを要求すると (ポストバック)、<hidden> 要素は、ASP.NET によって、解析され、ステータス情報に変換されます。
要求される Page インスタンスが、関連付けられた PageAdapter クラスを保持している場合、このインスタンスは、GetStatePersister メソッドを使用して、このアダプタから PageStatePersister オブジェクトを取得します。アダプタは、GetStatePersister メソッドをオーバーライドし、特定のクライアントがサポートする何らかの方法でページとコントロールの状態を格納する PageStatePersister オブジェクトを返すことができます。たとえば、SessionPageStatePersister クラスは、クライアントではなく Web サーバーにページとコントロールの状態を格納し、メモリと帯域幅が制限されている可能性のあるクライアント側で送信および格納する必要がある情報の量を少なくします。
"_VIEWSTATE" <hidden> HTML 要素の最大サイズは、MaxPageStateFieldLength プロパティまたは MaxPageStateFieldLength 構成設定を使用して設定できます。この値が設定され、"_VIEWSTATE" 要素の長さが最大長を超えると、コンテンツが複数の "_VIEWSTATE" 要素に分割されます。

SqlDataSource コントロールを使用して、ListBox コントロールをデータベース内のデータにバインドする方法を次のコード例に示します。
<%@ Page language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <BODY> <FORM runat="server"> <asp:SqlDataSource id="SqlDataSource1" runat="server" DataSourceMode="DataReader" ConnectionString="<%$ ConnectionStrings:MyNorthwind%>" SelectCommand="SELECT LastName FROM Employees"> </asp:SqlDataSource> <asp:ListBox id="ListBox1" runat="server" DataTextField="LastName" DataSourceID="SqlDataSource1"> </asp:ListBox> </FORM> </BODY> </HTML>
<%@ Page language="CS" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <BODY> <FORM runat="server"> <asp:SqlDataSource id="SqlDataSource1" runat="server" DataSourceMode="DataReader" ConnectionString="<%$ ConnectionStrings:MyNorthwind%>" SelectCommand="SELECT LastName FROM Employees"> </asp:SqlDataSource> <asp:ListBox id="ListBox1" runat="server" DataTextField="LastName" DataSourceID="SqlDataSource1"> </asp:ListBox> </FORM> </BODY> </HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <BODY> <FORM runat="server"> <asp:SqlDataSource id="SqlDataSource1" runat="server" DataSourceMode="DataReader" ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" SelectCommand="SELECT LastName FROM Employees"> </asp:SqlDataSource> <asp:ListBox id="ListBox1" runat="server" DataTextField="LastName" DataSourceID="SqlDataSource1"> </asp:ListBox> </FORM> </BODY> </HTML>
例のページを表示すると、"__VIEWSTATE" という名前の <hidden> HTML 要素の HiddenFieldPageStatePersister クラスによってビューステートが格納されます。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <BODY> <form name="_ctl0" method="post" action="sample.aspx"> <input type="hidden" name="__VIEWSTATE" value="MgAwADkANgAwADkAOQA3ADgAMQD/AQ8QBQoxMTU2NDc1NjE0EGRkFgICAQ9kFgICAw8PZBAVDQVhc2RhcwhCdWNoYW5hbghDYWxsYWhhbgdEYXZvbGlvCURvZHN3b3J0aAZGdWxsZXIES2luZwhLcmF3YXJpawlMZXZlcmxpbmcETWFyeQdQZWFjb2NrBlN1eWFtYQx0ZXN0IHJlZnJlc2gVDQVhc2RhcwhCdWNoYW5hbghDYWxsYWhhbgdEYXZvbGlvCURvZHN3b3J0aAZGdWxsZXIES2luZwhLcmF3YXJpawlMZXZlcmxpbmcETWFyeQdQZWFjb2NrBlN1eWFtYQx0ZXN0IHJlZnJlc2gUKgMNZ2dnZ2dnZ2dnZ2dnZ2RkZPdhi6U7jBPqVZbj0W8AYFSJ6oiq" /> <select size="4" name="ListBox1"> <option value="Buchanan">Buchanan</option> <option value="Callahan">Callahan</option> <option value="Davolio">Davolio</option> <option value="Dodsworth">Dodsworth</option> <option value="Fuller">Fuller</option> <option value="King">King</option> <option value="Leverling">Leverling</option> <option value="Suyama">Suyama</option> </select> </form> </BODY> </HTML>

System.Web.UI.PageStatePersister
System.Web.UI.HiddenFieldPageStatePersister


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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- HiddenFieldPageStatePersister クラスのページへのリンク