.NET TIPS [ASP.NET]アプリケーション共通の処理をPage派生クラスで実装するには?山田 祥寛2005/04/29 |
![]() |
|
「TIPS:[ASP.NET]検証コントロールのエラー・メッセージを一元管理するには?」では、ASP.NETの検証コントロールで出力するエラー・メッセージを一元的に管理する方法について紹介した。そのTIPSでは、分かりやすさを優先してメッセージ生成のロジックを.aspxファイル上にまとめて記述しているが、本来、こうしたアプリケーション共通の処理はどこか1カ所で共通的に定義するのが好ましい。
アプリケーション共通の処理を記述するには、Global.asaxやHTTPモジュールを利用する方法もあるが、今回の例のように、Pageクラス(System.Web.UI名前空間。ASP.NETにおけるWebページの実体)にアクセスする処理を記述しなければならない場合には、Pageクラスを継承した独自のクラス(Page派生クラス)を定義する方が便利だ。
Page派生クラスにアプリケーション共通の処理を定義すれば、個々のWebフォームはこのPage派生クラスから継承するだけでその処理を実装することができる。
![]() |
Page派生クラスを利用した共通機能の実装 |
●Page派生クラスを作成する
それでは、実際にPage派生クラスを利用したアプリケーション共通機能の実装例を見てみよう。
本稿では、「TIPS:[ASP.NET]検証コントロールのエラー・メッセージを一元管理するには?」で紹介したvalidateManage_cs.aspx/validateManage_vb.aspxを、Page派生クラスを利用して書き直してみることにする。なお、メソッド内部のロジックについては、前掲のTIPSでも紹介したとおりなので、詳しくはそちらをご覧いただきたい。
以下の実装例では、Pageクラスから派生したMyPageクラスを記述している。
|
|
Page派生クラスによる実装例(C#版:MyPage.cs) |
|
|
Page派生クラスによる実装例(VB.NET版:MyPage.vb) |
Page派生クラスを定義するために最低限必要な条件は、以下の2点だ。
-
System名前空間、System.Web.UI名前空間、System.Web.UI.WebControls名前空間をインポートすること
-
Pageクラス(System.Web.UI名前空間)を継承すること
MyPage.vb(またはMyPage.cs)を使用するに先立って、あらかじめコマンド・プロンプトからこれをコンパイルしておく必要がある。コンパイルの構文は以下のとおり。
|
|
Page派生クラス(MyPage.cs)のコンパイル方法(C#の場合) |
|
|
Page派生クラス(MyPage.vb)のコンパイル方法(VB.NETの場合) |
コンパイルの結果、作成されたMyPage.dllはアプリケーション・ルート配下の「bin」フォルダに配置しておくこと。
●Page派生クラスを利用(継承)する
次に、Page派生クラス(本稿ではMyPageクラス)を継承した個別のページを作成し、実際にMyPageクラスでの定義内容が個別のページに適用されていることを確認してみよう。
|
|
Page派生クラス(MyPageクラス)を適用したWebフォームの例(ValidateManage.aspx) |
Page派生クラスを適用するのは簡単だ。@PageディレクティブのInherits属性から適用したいPage派生クラスの完全修飾名(ここでは「Wings.MyPage」)を指定するだけでよい。あとはWebフォーム(ValidateManage.aspx)を実行して、前掲のTIPSと同様の結果が確認できれば成功だ。
なお、本稿では個別のWebフォーム上でPage派生クラスを宣言しているが、代わりにweb.configで宣言することもできる。上記のWebフォーム(ValidateManage.aspx)からInherits属性の記述を取り除き、以下のようなweb.configを記述してみてほしい。やはり同様の結果が得られるはずだ。
|
|
Page派生クラスの適用を宣言したweb.config | |
個別のWebフォーム上でPage派生クラスを宣言する代わりに、web.configで宣言することもできる。 |
<page>要素のpageBaseType属性には「型名,アセンブリ名」の形式で値を設定すること(上記の例では「Wings.MyPage, MyPage」と指定している)。
カテゴリ:Webフォーム 処理対象:検証 使用ライブラリ:Pageクラス(System.Web.UI名前空間) 関連TIPS:[ASP.NET]検証コントロールのエラー・メッセージを一元管理するには? |
|
![]() |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
![]() |
|
|
|
![]() |