ASP.NETコンテンツページでマスターページのオブジェクトにアクセス

3898 ワード

ASP.NET2.0から、マスターページの機能が提供されます.マスターページは、1つのマスターページと複数のコンテンツページから構成されます.マスターページの主な機能はASP.NETアプリケーションのページは、同じレイアウトとインタフェーススタイルを作成します.マスターページの使用は、通常のページと同様に、ファイルやグラフィック、HTMLコントロールやWebコントロール、バックグラウンドコードなどを配置できます.
マスターページは1つのページテンプレートにすぎず、個別のマスターページはユーザーにアクセスできません.マスターページとコンテンツページには厳格な対応関係があります.マスターページにContentPlaceHolderコントロールが複数含まれている場合は、コンテンツページにも対応するContentコントロールを設定する必要があります.
マスター・ページの概念を振り返ると、今日は主に、通常のページで関連するマスター・ページのオブジェクト(コントロールの値など)にアクセスする方法をまとめます.
Pageオブジェクトには、マスターページベースクラスのMaster Pageへの参照を実現できる共通のプロパティMasterがあることがわかります.MasterPageは通常のASPに相当する.NETページのPageオブジェクト.したがって、マスターページの各サブオブジェクトへのアクセスは、MasterPageオブジェクトを使用して実現できます.
具体的なプログラムの例は以下の通りです.
ASP.NET空サイトプロジェクトで、マスターページMasterPage 1を追加します.Masterと普通のページDefault.次に、マスターページとコンテンツページにLabelボタンを追加します.マスターページのLabelコントロールのID属性はlabMasterで、現在のシステムの日付を表示します.コンテンツページのLabelコントロールのID属性はlabContentであり、マスターページのLabelコントロール値を表示(アクセス)するために使用されます.MasterPage 1.MasterマスターページのPage_Loadイベントに次のコードを追加します.
1 protected void Page_Load(object sender, EventArgs e)
2     {
3         this.labMaster.Text = "   " + DateTime.Today.Year + " " + DateTime.Today.Month + " " + DateTime.Today.Day + " ";
4     }

デファルトでaspxコンテンツページのPage_LoadCompleteイベントで、次のコードを追加します.
1 protected void Page_Complete(object sender, EventArgs e) 2  { 3 if (!this.IsPostBack) 4  { 5 //6 Label masterLabel = this.Master.FindControl("labMaster") as Label; 7 this.labContent.Text = masterLabel.Text; 8  } 9 }

プログラムを実行すると、コンテンツページのLabelコントロールにマスターページLabelが表示されます.textの値.注意したいのは、コンテンツページのPage_Loadイベント時にマスターページより先のPage_Loadイベントが発生しました.ここではPage_を使っていますLoadCompleteイベント.そのうちPage_LoadCompleteイベントは、ライフサイクル内とページロードの終了時にトリガーされます.
-------------------------------------------------------------------------------------------------------------------------
本文は作者のGISQZCのオリジナルの文章で、転載を歓迎して、しかし出典を明記しなければならなくて、さもなくば関連する法律の責任を追及します!