2012-03-28 7 views
0

私はViewStateをSQL Serverに格納するクラスを持っています(コードはAdam Weigertに感謝します)。それは私のWebページではうまくいくようですが、ページ内のユーザーコントロールによって、ViewStateが保存されることはありません。私がAdamから入手したコードは、System.Web.UI.Pageの下に基本クラスを挿入します。私は、ユーザーコントロールはまた、このコードを発射するようにもSystem.Web.UI.UserControlから継承するために、このコードが必要だと思いますが、VS 2010は言う: 「するSystem.Web.UI:クラスはSystem.Web.UI.PageとSystem.Web.UI.UserControlの両方から継承できますか?

クラスのSqlViewStatePage」は、複数の基底クラスを持つことができません.PAGE」と 'System.Web.UI.UserControl'

私のWebページのすべてが今SqlViewStatePageから継承BaseWebPageから継承します。すべてのユーザーコントロールはSqlViewStatePageから継承したいBaseUserControlから継承しますが、これは機能しません。

どうすればよいですか?

+0

あなたはSqlViewStateUserControlを作成してみてくださいと「SqlViewStatePage」と同様の機能を実装することができます。オーバーライドする方法は少し異なります。 –

+0

この記事を意味しますかhttp://weblogs.asp.net/adweigert/archive/2004/03/09/sqlviewstate-the-path-to-better-viewstate-storage.aspx? –

答えて

2

"Stores ViewState in SQL Server"のロジックを新しい.csクラスにシフトします。コントロールとページでこのクラスにアクセスしてください

私たちのアーキテクチャには3つのファイルが置かれています。

  1. ベースページ - このファイルにはSystem.Web.UI.Pageを継承します。さらに、私たちはaspxページのBase Pageを継承しています。

  2. ベースコントロール - このファイルはSystem.Web.UI.UserControlを継承します。さらに、私たちはユーザコントロールのベースページを継承します。

  3. 基本クラスは - あなたが構築することはできませんので、ネットでは、我々は多重継承を使用することはできません

0

私たちは、共通の機能、静的/非静的データメンバー/メンバー関数を書きますUserControlとPageから同時に継承するクラスです。

私は約SqlViewStateUserControlビットを読んで、それはの.Net 1.0と1.1のためのソリューションだったようです。 VS 2010を使用している場合は、PageStatePersisterクラスのメリットがあります。このクラスを継承し、それを実装してビューステートをデータベースに保存します(このメカニズムは.Net 2.0で導入されましたが、多くの実装が見つかるはずです)。

0

あなたの質問に直接対処するのではなく、年を取ってSavePageStateToPersistenceMediumとLoadPageStateFromPersistenceMediumをオーバーライドして、年代を借りた会社の大規模なプロジェクトで演奏しました。このテクニックは、特にasp.net AJAXライブラリを使用するときに問題が発生しました。最終的には、このテクニックを放棄しました。部分的なポストバックはViewStateの復元に失敗しました。

これは、ViewStateをSQLに格納する理由/方法である場合、克服する必要がある問題がある可能性があります。

Saving Viewstate on Server

関連する問題