- PR -

マスターページでViewStateをSession変数へ保存する方法について

1
投稿者投稿内容
ゆっきー
ベテラン
会議室デビュー日: 2006/04/21
投稿数: 65
投稿日時: 2007-01-11 10:40
ASP.NET2.0(Visual Web Developer 2005 Express Edition)でWEBアプリケーションの開発をしています。

マスターページを作成してビューステートをセッション変数へ保存しようとしたのですが、以下エラーが出てOverridesできません。マスターページでは不可能なのでしょうか?

コード
Protected Overrides Sub SavePageStateToPersistenceMedium(ByVal viewState As Object)
'ページのビューステートをセッション変数へ保存
Session("ViewState" & Me.GetType.Name) = viewState
End Sub

Protected Overrides Function LoadPageStateFromPersistenceMedium() As Object
'ページのビューステートをセッション変数から読み込む
Return Session("ViewState" & Me.GetType.Name)
End Function

エラー
sub 'SavePageStateToPersistenceMedium' はベース class の sub をオーバーライドしないため、'Overrides' として宣言することはできません。
function 'LoadPageStateFromPersistenceMedium' はベース class の function をオーバーライドしないため、'Overrides' として宣言することはできません。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-01-11 11:58
MasterPage メソッド MasterPageにはそのメソッドないからオーバーライドはムリじゃないっすかね。

Webページのベースクラスを作るのが良いのでは。Pageを継承したクラスを。ベースクラスの中でビューステートの細工をしてみてはいかがでしょうか。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-01-11 12:41
本題から外れるかもしれませんが、SavePageStateToPersistenceMedium のドキュメントを読んでもらえば分かるように、ASP.NET 2.0 からは PageStatePersister を使って、ビューステートの保存場所を変更できます。組み込みの SessionPageStatePersister が用意されているので、簡単にセッションに書き出せると思います。

ただ、もちろん状況に依りますがビュー状態をセッションに持たせるのはあまり良い作法とは言えません。
_________________
囚人のジレンマな日々
ゆっきー
ベテラン
会議室デビュー日: 2006/04/21
投稿数: 65
投稿日時: 2007-01-11 14:11
かめたろさん・囚人さん回答ありがとうございます。

やりたかったのは、ViewStateをセッション変数へ保存することなので、PageStatePersisterを調べてみました。

以下ページにサンプルはあったのですが、pageに実装するのではなくSessionPageStatePersister クラスのインスタンスを返す PageAdapter クラスを記述する方法になります。PageAdapter クラスを記述した後、どうページに反映するかが分かりません。アドバイスよろしくお願いします。

http://msdn2.microsoft.com/ja-jp/library/system.web.ui.sessionpagestatepersister(VS.80).aspx
ゆっきー
ベテラン
会議室デビュー日: 2006/04/21
投稿数: 65
投稿日時: 2007-01-11 14:11
かめたろさん・囚人さん回答ありがとうございます。

やりたかったのは、ViewStateをセッション変数へ保存することなので、PageStatePersisterを調べてみました。

以下ページにサンプルはあったのですが、pageに実装するのではなくSessionPageStatePersister クラスのインスタンスを返す PageAdapter クラスを記述する方法になります。PageAdapter クラスを記述した後、どうページに反映するかが分かりません。アドバイスよろしくお願いします。

http://msdn2.microsoft.com/ja-jp/library/system.web.ui.sessionpagestatepersister(VS.80).aspx
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-01-11 16:07
引用:

ゆっきーさんの書き込み (2007-01-11 14:11) より:

やりたかったのは、ViewStateをセッション変数へ保存することなので、PageStatePersisterを調べてみました。

--

PageAdapter クラスを記述した後、どうページに反映するかが分かりません。アドバイスよろしくお願いします。

http://msdn2.microsoft.com/ja-jp/library/system.web.ui.sessionpagestatepersister(VS.80).aspx


http://msdn2.microsoft.com/ja-jp/library/system.web.ui.pagestatepersister(VS.80).aspx

ちょいと見落としですかね?
こんな風に、基底クラスの説明部分で使い方が記述されていたりもします。
ゆっきー
ベテラン
会議室デビュー日: 2006/04/21
投稿数: 65
投稿日時: 2007-01-11 16:45
なちゃさんのご指摘どおり、MyPageAdapter アダプタを有効にするための記述がありました。
さっそく試してみようと思います。
皆さんアドバイスありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)