在ASP.NET2.0開始,提供了母版頁的功能。母版頁由一個母版頁和多個內容頁構成。母版頁的主要功能是為ASP.NET應用程式中的頁面創建相同的佈局和界面風格。母版頁的使用與普通頁面類似,可以在其中放置文件或者圖形、任何HTML控制項和Web控制項、後置代碼等。 母版頁僅僅是一個頁面模板,單獨的母版頁是
在ASP.NET2.0開始,提供了母版頁的功能。母版頁由一個母版頁和多個內容頁構成。母版頁的主要功能是為ASP.NET應用程式中的頁面創建相同的佈局和界面風格。母版頁的使用與普通頁面類似,可以在其中放置文件或者圖形、任何HTML控制項和Web控制項、後置代碼等。
母版頁僅僅是一個頁面模板,單獨的母版頁是不能被用戶所訪問的。母版頁和內容頁有著嚴格的對應關係。母版頁中包含多少個ContentPlaceHolder控制項,那麼內容頁中也必須設置與其對應的Content控制項。
回顧了母版頁的概念後,我今天主要是總結如何在普通的頁面中訪問與其關聯的母版頁中的對象(比如說控制項的值):
我們知道 Page對象具有一個公共屬性Master,該屬性能夠實現對母版頁基類MasterPage的引用;MasterPage相當於普通ASP.NET頁面中的Page對象。因此,可以使用MasterPage對象實現對母版頁中各個子對象的訪問。
具體的程式實例如下:
在一個ASP.NET空網站項目中,添加一個母版頁MasterPage1.Master和一個普通頁面Default。然後分別在母版頁和內容頁中添加一個Label按鈕。母版頁中的Label控制項的ID屬性為labMaster,用來顯示當前系統日期;內容頁的Label控制項的ID屬性為labContent,用來顯示(訪問)母版頁中的Label控制項值。
在MasterPage1.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 }
在Default.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事件是在生命周期內和頁面載入結束時觸發。