C#頁面設計技術


一、母版頁

1、母版頁是指為應用程序中的頁創建一致的布局,為應用程序中的所有頁、或一組頁定義所需的外觀和標准行為,然后創建要顯示內容的各個頁內容,並將內容頁與母版頁相關聯。

      當用戶請求內容頁的時候,內容頁和母版頁合並,將內容頁的內容與母版頁的布局相組合,然后再展示出來。(從這里我們可以看出,母版頁類似於一個框架,內容頁就是蓋在框架外的飾品,注意,如果      我們只有母版頁,沒有內容頁,這個頁面是沒有用處的)

      從上,我們可以大致得出母版頁具有:易於站點修改和維護、減輕工作人員工作壓力;提高內容的整合能力;有利於實現頁面布局;提供一種便利的對象模型。

2、母版頁的創建(注:此處本人使用的是vs2017編輯器)

      選擇母版頁:

     

     

 

 上面我們就直接創建好了一個母版頁,然后我們查看它的控件,會發現,它會多有一個ContentPlaceHolder控件,在這里面,我們一般用來放內容頁面所需的js、css代碼。

3、內容頁的創建:(注意右下角選擇母版頁的選擇框)

     

 

     

 

      這樣我們這個內容頁也就創建好了,從創建完的效果我們可以看出,該aspx文件和往常的文件有所不同:

     

 

      1、內容頁中多了一個MasterPageFile屬性,從這個屬性的值中我們可以看出它實際上是指出了母版頁的位置。除此之外,我們仔細觀察.master(母版頁)中的代碼和.aspx(內容頁)中的代碼,我們會發現內容頁中包含有兩個ContentPlaceHolder控件,一個id是head,一個id是ContentPlaceHolder1;其中head是用來寫標題一類的CSS、Javascript代碼;另外的就是其余部分的了。內容頁和母版頁之間通過這兩個id進行對應綁定。注意:ContentPlaceHolder控件是不能夠額外添加的。

      

 

      

 

       2、從上圖中我們可以看出該內容頁中僅有一個<asp:Conten>控件,它和母版頁中的ContenPlaceHolder相對應,兩個屬性相綁定。在ContenPlaceHolderID中寫HTML、JS代碼。

      

 

      

  4、頁面運行機制

(1)用戶訪問內容頁;

(2)獲取內容頁后,讀取@Page指令,若指令引用到一個母版頁,則也讀取該母版頁,若為第一次請求,則兩個頁都要進行編譯;

(3)母版頁合並到內容頁的控件樹中;

(4)各個Content控件的內容合並到母版頁中相對應的ContentPlaceHolder控件中;

(5)呈現結果頁;

         母版頁和內容頁處理順序

 

 

第01步、內容頁的 Page_PreInit
第02步、母版頁的 Page_Init
第03步、內容頁的 Page_Init
第04步、內容頁的 Page_InitComplete
第05步、內容頁的 Page_PreLoad
第06步、內容頁的 Page_Load
第07步、母版頁的 Page_Load
第08步、母版頁或內容頁的 按鈕點擊等回發事件(Master或Content的Button事件不會同時觸發)
第09步、內容頁的 Page_LoadComplete
第10步、內容頁的 Page_PreRender
第11步、母版頁的 Page_PreRender
第12步、內容頁的 Page_PreRenderComplete
第13步、內容頁的 Page_SaveStateComplete
第14步、母版頁的 Page_Unload
第15步、內容頁的 Page_Unload

5、在內容頁中訪問母版頁

弱類型引用:使用FindControl方法傳遞一個控件的ID

 

 

 

 

 

 輸出結果

 

強類型引用:訪問模板頁中公開屬性和方法

 

 

 

 

 

 以上是主要的代碼,最后輸出結果和上面的一樣。

我們需要關注的點在於:

需要將Master顯式地轉換為母版頁類型(MasterPage)。則需要在頁面中使用@ MasterType指令,則可以創建對母版頁的強類型引用:(該指令添加在內容頁中)

<%@ MasterType TypeName="MasterPage" %> 或 <%@ MasterType VirtualPath="~/MasterPage.master" %>

 

//在內容頁中對母版頁中屬性訪問可修改為:

 string strSearch = Master.SearchText;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM