2011-08-03 4 views
1

現在要求されているPageオブジェクトへの参照をグローバルに取得できるようにするため、Global.asaxファイルを追加しました。ASP.NETがGlobal.asaxでリクエストしたページ

これを行う方法はありますか?私はそれがApplication_BeginRequestイベントと関係があると考えています。

+0

なぜですか?あなたがやろうとしていることでより良い方法があるはずです –

+0

そしてそのようなリファレンスで何をしたいですか? – Oded

+0

任意のページリクエストでは、現在のページを静的クラスに格納するためのハンドルが必要です。このクラスは、ページ参照を使用してサーバーサイドIOを実行します。 – Jesse

答えて

3

何んPageのサブクラスであるクラスを作成します。このサブクラスをすべてのページの基本タイプとして使用します。

public class MyPage : Page 
{ 
//... override whatever you want, add functionality, whatever 
} 

すべての他のページ:

public class Index : MyPage 
{ 
    // Automatically get new behaviour 
} 
1

httpモジュールを使用して、アプリケーションの各ページのすべてのリクエストをキャッチし、リクエストで必要なものを実行する必要があります。

+0

httpモジュールを使用して、要求ライフサイクルのどの段階ででも要求をキャッチできます。 –

1
var page = HttpContext.Current.Handler as Page 
if(page != null) /// do something with page 

(あなたは空想実際には非常に簡単です、あなた自身のHttpModuleをし、書いていない場合)PreRequestHandlerExecuteがあなたの目的のために問題ないはず

+1

現在のハンドラは、要求ライフサイクルのこの時点ではnullのようです。 – StriplingWarrior

+0

MANのようにPreRequestHandlerExecuteを試してください –

7

あなたはGlobal.asaxのからではなく、任意のstage of the request life cycleから現在のハンドラ(ページ)にアクセスすることができます。私。それは、BeginRequestイベントでは不可能であるが、それはPreRequestHandlerExecute中に可能である:ハンドラがページでない場合

void Application_PreRequestHandlerExecute(object sender, EventArgs e) 
{ 
    var page = (Context.Handler as System.Web.UI.Page); 
} 

なお、ページはまだ、nullの場合もあります。また、あなたのアプローチが正しいかどうかはわかりません。たぶん、あなたがしようとしていることをもっと詳しく説明する必要がありますか?

+0

ええ、オデッドの提案はうまくいくようです。 – Jesse

関連する問題