2009-06-16 18 views
1

自分自身でASPXページを解析するのは、ASPXページのクラスを決定する方法は何ですか?ASPXページのクラスを決定する方法は?

私たちのプロジェクトでは、Webサイトの種類やプロジェクトではなくVS2008のWebプロジェクトを使用しています。これは、サイト全体に対して単一のDLLを提供します。

これで、ASPXサイトのクラスをプログラムで決定する必要があります。

I KNOW しかし、ASPXクラスはaspxファイル(VSで作成された場合)と同じ名前を持っていますが、ファイル名は本番で改名される可能性があります。

すべての私たちのASPXページは、基本的な@Pageディレクティブで始まる:だから

<%@ Page ... Inherits="_CLASS_NAME_GOES_HERE_" %> 

、ディレクティブを自分で解析するの短い、私は他のどのような選択肢がありますか?

編集を追加します。

私たちは私たちのポータルを管理するために、サードパーティ製のソフトウェアを使用しているので、それは一定の条件が必要です。

私は、ページをポータルの "安全"とマークするカスタム属性を作成しようとしています。そのため、ページ間のすべてのリンクは、宛先ページが安全であるかどうかを分析する必要があります。

は、我々は相対URLを持って言う:私はその後、私はそれを少し明確にしてみましょう、私はそれが思った通りの質問はのように明確ではないかもしれないことがわかり

を明確にする

編集例えば特定のページ"~/destination.aspx"

私はそのページのクラスをそのURLに基​​づいて決定する必要があります。

+4

あなたの最善の選択肢は、これを行う必要がないように再設計することだと思います。このデザインは何を目的としていますか? –

+0

あなたが使用しているポータル管理ソフトウェアを教えてください。 ASP.NETにとって本当に悪い解決策のように思えます。 –

+0

@Johnポータルソリューションが本当にいいのは、ポータルだけが必要なときです。従来のASPで開発された.NETとの統合は欠けています。そして、このような古いテクノロジーを使用するために私は実際に行くようになりました。最後のパン・アメリカン・ゲームのように非常に重い使い方でポータルを保持することができます。 –

答えて

1

次のコードは、私はあなたが探している何を考えていたが、それは明らかに、「あなたのコードから直接使用するためのものではない」とマークされた方法で使用しています。

string path = "~/MyPage.Aspx"; 
IHttpHandler handler = System.Web.UI.PageParser.GetCompiledPageInstance(path, Server.MapPath(path), HttpContext.Current); 
Response.Write(handler.GetType().BaseType.FullName); 

この出力:

MyApp.MyPage 

GetType()。BaseTypeは、コードビハインドクラスを継承する.ASPXページごとに新しいクラスを動的に作成するため、BaseTypeを使用する必要があります。

2

あなたが「安全」にあるページの全てを所有している場合は、多分あなたは、あなたが必要とする情報を持っていた同じ基本クラスからそれらすべてを引き出すことができ、ページ分離コード

0

でthis.GetType()を試みることができます。それで、ベースに型キャストするだけです。それが失敗すると、安全ではないことが分かります。