2009-07-01 9 views
2

私のすべてのASP.Netページが継承する汎用クラスを作成しようとしているので、複数のページにまたがって関数を共有できます。MasterpageとContentページを単一のクラスから継承する

これを行うには、System.Web.UI.Page(コンテンツページでこれを継承する必要があります)を継承する新しいクラスを作成し、次にコンテンツページが新しく作成クラスを継承します。

私の問題は、MasterpageがSystem.Web.UI.Masterpageを継承していることです。

コンテンツページとマスターページの両方にプロジェクトを設定し、一般クラスの機能を使用するにはどうすればよいですか?

わかりやすいかどうかお気軽にお問い合わせください。

ありがとうございます!

E

答えて

2

まず、あなたがこれをしたいと思い、なぜわかりません。彼らの機能によってマスターページには主にあなたのページが関係していてはならない機能と、その逆の機能があります。また、ページに依存しない共通の機能が必要な場合は、静的クラス(Mathとよく似ています)またはマスターページとページのカスタム基本クラスで実装できるヘルパークラスを作成できます。

ただし、実際のオプションは、2つのカスタム基本クラスを作成することだけです。マスターページを継承するものと、ページから他のものを継承するもの。どちらも、作成するインターフェースICommonを実装する必要があります。次に、すべての関数をプロキシできる別の静的クラスを作成します。

私は考えることができる唯一の解決策です。あなたのmasterpagesとページで

EDIT

ここでは、より良い解決策だ

public class Helper 
{ 
    public static int getUserID(...) 
    { 
     // ... Code to get User ID 
    } 
} 

私はあなたがこれを行うことができるとは思わない

int UserID = Helper.getUserID(...); 
+0

私は多くの機能とデータを持っているので、私はこれをやりたいと思っています。これがなければ、ユーザーIDを取得するすべてのページに関数getUserIDを作成する必要があります。ページ固有の関数については、それらをCodeBehindファイルに残します。 –

+0

getUserIDはページに依存しないので、アクセスできる静的クラスを作成することができます。私は自分の投稿を編集します。 –

+0

パーフェクト。ありがとう –

0

を使用し、マスターページは、ユーザーコントロールを継承し、 PageはTemplateControlを継承します。スペンサーのように、私はヘルパー/ユーティリティクラスを作成するだけです。

0

私はそれが遅すぎると知っていますが、いくつかのものを共有したいのは、同じものに出会うかもしれないということです。

public static void Commonfunction(this TemplateControl ctl) 
{ 
     // Your Code here 
} 

コール任意のページまたはマスターページで

this.Commonfunction(); 

としてこの機能: これは、拡張機能を使用したサンプル・コードです。

0

質問は5歳ですが、私は将来の読者に別のオプションを提供したいと考えていました。

あなたが説明したところから、MasterPageと呼ぶものは、たとえば画面の横にコンテンツページを読み込むフレームのようなものだと思います。

私の場合、機能を使ってBaseMasterPageクラスを作成し、コンテンツページ用にMasterPage(現在のページのコードの一部を配置することもできます)を作成することができます。次のステップは、明らかに現在のMasterPageと、ContentMasterPageの両方をこれから継承するとします。BaseMasterPage

このようにすると、フレームページとコンテンツページの両方に、たとえばLoggedUserプロパティを持つことができます。

関連する問題