さようなら、ViewState-2、またはそのベースに!

ViewState との別の厳しい 対決 。 今回は、SQL Serverデータベースに保存しようとします。

理論を少し繰り返します。 PageAdapterクラスがあり、その使用により、aspxページを特定のブラウザー(この場合はすべてのユーザー)に "適応"できます。 このアダプターを使用すると、ViewStateをロードおよび保存する機能をオーバーライドできます( GetStatePersisterメソッドを使用)。



そのため、手順:



-ViewStateを保存するための単純な構造をデータベースに作成します。



(廃止された)ViewStateを取得、保存、およびクリアするためのストアドプロシージャも作成します。



-PageStatePersisterクラスを継承します。 このクラスでは、LoadメソッドとSaveメソッドを再定義して、ViewStateのロードと保存をそれぞれ実装します。

namespace SqlStatePersister

{

public class SqlPageStatePersister : PageStatePersister

{

private Page _page;



public SqlPageStatePersister( Page page)

: base (page)

{

_page = page;

}



public override void Load()

{

// ViewState

}



public override void Save()

{

// ViewState

}



}

}



* This source code was highlighted with Source Code Highlighter .






-PageAdapterクラスを継承します。このクラスでは、最初のステップで定義されたクラスのインスタンスを返すようにGetStatePersisterメソッドを再定義します。

namespace SqlStatePersister

{

public class SqlPageAdapter : PageAdapter

{

public override PageStatePersister GetStatePersister()

{

return new SqlPageStatePersister( Page );

}

}

}




* This source code was highlighted with Source Code Highlighter .








-.browserファイルを使用して、ページを「適応」します。

< browsers >

< browser refID ="Default" >

< controlAdapters >

< adapter controlType ="System.Web.UI.Page" adapterType ="SqlStatePersister.SqlPageAdapter" />

</ controlAdapters >

</ browser >

</ browsers >




* This source code was highlighted with Source Code Highlighter .








-オプションで、データベースに保存する前にgzip圧縮機能などのパンを追加します。



-廃止されたViewStateからテーブルをクリーンアップするシェダー(たとえば、SQL Serverジョブ)を作成します。



-利益!



(VS 2010ソリューション、.NET 4)では、 AdventureWorksデータベースを使用しています。これは、例としてNorthwindを置き換えたものです。 アプリケーションを機能させるには、appSettingsにViewStateCompress設定が必要です。これは、gzip圧縮が必要な場合は1に、不要な場合は0に設定されます。 connectionStringsセクションには、ViewStateが格納されるデータベース接続文字列も必要です(私の例では、これはソリューションからinstall.sqlスクリプトを実行することによって作成された別個のデータベースです)。



ご清聴ありがとうございました! プロジェクトに関するより詳細なコメントが必要な場合、私はあなたのサービスにいます;)



PS 非表示フォームフィールドおよびViewState圧縮 ではなく、データベース内のViewStateに基づいています。



All Articles