ASP.NET でマスターページ機能を使う際、クライアントページ側からマスターページ側のオブジェクトを扱う方法

ASP.NET 2.0 からは、マスター・ページと言う、共通のフレームを利用する機能が追加されました。
共通のフレーム側をマスターページ、各機能毎のページをコンテンツページと呼ぶのですが、コンテンツページのプログラムからマスターページ側のオブジェクトを参照したい場合などにどうすればよいかについて、メモしておきます。

*

目次

Page.Master プロパティを使う方法

もっとも簡単な方法は、Page オブジェクトにある Master プロパティを利用することです。
読み取り専用の MasterPage オブジェクトを返すこのプロパティは、現在のコンテンツページが埋め込まれているマスターページを返します。

例えば、次の様なマスターページがあるとしましょう。
Literal オブジェクトがあるのがポイントです。

[code lang=’html’]





[/code]

このページの「Literal1」に、クライアント側プログラムでアクセスするには、次の様に書きます。

[code lang=’c#’] (Page.Master.FindControl(“Literal1”) as Literal).Text = “なんちゃら”
[/code]

FindControl メソッドを利用してオブジェクトを検索し、as 演算子によって Label クラス型へ参照変換を行っています。

Master プロパティは読み取り専用ですが、戻り値である MasterPage オブジェクトのメンバは、操作可能です。

@MasterType ディレクティブを利用する方法

上記の方法は、マスターページ側のオブジェクトにアクセスする方法ですが、今度は直接マスターページ側が持つメンバを参照したい場合についてです。

まず、準備としてコンテンツページの上部に、次の @MasterType ディレクティブを記述します。

[code lang=’html’] < %@ MasterType VirtualPath="~/[マスターページ].master" %>
[/code]

このディレクティブが存在すると、.NET Framework は、Master プロパティを厳密に型定義します。

実際に使うメソッドは、Public メンバである必要があります。

呼び出す方法は、Master プロパティ経由でメンバを指定します。
例えば、MasterPage オブジェクトが Public な Method1 を持つ場合、次の呼び出しの記述が可能です。

[code lang=’c#’] Master.Method1();
[/code]

私は、複雑なビジネスロジックを記述するのであればクラス分けしていますが、ちょっとした共通メソッド程度であれば、マスターページに記述する、というような使い分けをしています。

10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント

【最後まで読んでくれたあなたに】

あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?

私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。

それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。

しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。

そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。

・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!

という方は今すぐ無料でダウンロードしてください。

期間限定で、無料公開しています。

※登録後に表示される利用条件に沿ってご利用ください

コメントを残す