WebForm 母版頁使用


首先來說一下什么是母版頁:

  • 母版頁可以為應用程序中的頁創建一致的布局。單個母版頁可以為應用程序中的所有頁(或一組頁)定義所需的外觀和標准行為。
  • 母版頁的使用與普通頁面類似,可以在其中放置文件或者圖形、任何的HTML控件和Web控件,后置代碼等。母版頁的擴展名以.master結尾,不能被瀏覽器直接查看。母版頁必須在被其他頁面使用后才能進行顯示。
  • 它的使用跟普通的頁面一樣,可以可視化的設計,也可以編寫后置代碼。與普通頁面不一樣的是,它可以包含ContentPlaceHolder控件,ContentPlaceHolder控件就是可以顯示內容頁面的區域。
  • 母版頁僅僅是一個頁面模板,單獨的母版頁是不能被用戶所訪問的。單獨的內容頁也不能夠使用。母版頁和內容頁有着嚴格對應關系。母版頁中包含多少個ContentPlaceHolder控件,那么內容頁中也必須設置與其相對應的Content控件。當客戶端瀏覽器向服務器發出請求,要求瀏覽某個內容頁面時,引擎將同時執行內容頁和母版頁的代碼,並將最終結果發送給客戶端瀏覽器。

 

母版頁具有下面的優點:
  • — 使用母版頁可以集中處理頁的通用功能,以便可以只在一個位置上進行更新。
  • — 使用母版頁可以方便地創建一組控件和代碼,並將結果應用於一組頁。例如,可以在母版頁上使用控件來創建一個應用於所有頁的菜單。
  • — 通過允許控制占位符控件的呈現方式,母版頁使您可以在細節上控制最終頁的布局。
  • — 母版頁提供一個對象模型,使用該對象模型可以從各個內容頁自定義母版頁。

 

一、母版頁簡介

使用 ASP.NET 母版頁可以為應用程序中的頁創建一致的布局。單個母版頁可以為應用程序中的所有頁(或一組頁)定義所需的外觀和標准行為。

母版之所以稱為母版,就是將大部分網頁上固定內容,比如導航欄,版權聲明欄放到一個母版里,然后編寫網頁時只需要調用母版就行了,內容頁就不需要再寫那些內容了。不需要將相同的部分再寫一遍。母版中可以標記多個asp:ContentPlaceHolder。

母版頁僅僅是一個頁面模板,單獨的母版頁是不能被用戶所訪問的。單獨的內容頁也不能夠使用。母版頁和內容頁有着嚴格對應關系。母版頁中包含多少個ContentPlaceHolder控件,那么內容頁中也必須設置與其相對應的Content控件。當客戶端瀏覽器向服務器發出請求,要求瀏覽某個內容頁面時,引擎將同時執行內容頁和母版頁的代碼,並將最終結果發送給客戶端瀏覽器。

在ASP.NET中母版頁有兩種作用,一是提高代碼的復用(把相同的代碼抽出來),二是使整個網站保持一致的風格和樣式。

母版頁無法直接啟動運行,需要套用的子頁面啟動把它帶出來

母版頁的嵌套,一般用2層足夠,最多3層

二.創建母版頁:

(1)可以創建一個全新的母版頁,稱為一級母版頁

(2)也可以創建另一種母版頁,在某一個母版頁基礎上,加上某些內容,讓創建的母版頁稱為另一個母版頁的子級,可以稱為二級模板頁

 

編寫母版頁:

 

復制代碼
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="M1.master.cs" Inherits="M1" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <%--這里可以寫CSS樣式,也可以引用外部樣式表--%> <%--這個里面什么都不能寫,這個是留的空地,用來給子級和子二級母版頁來填空的--%> <asp:ContentPlaceHolder ID="head" runat="server"> </asp:ContentPlaceHolder> <%--所有ContentPlaceHolder控件在母版頁中都不能填入內容--%> </head> <body> <form id="form1" runat="server"> <div> <%--body內的空白處用來填寫母版頁的內容--%> <%-- 表格,控件,表單元素都可以放在這里--%> <%--這個里面什么都不能寫,這個是留的空地,用來給子級和子二級母版頁來填空的--%> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> <%--所有ContentPlaceHolder控件在母版頁中都不能填入內容--%> <%--body內的空白處用來填寫母版頁的內容--%> </div> </form> </body> </html> <script type="text/javascript"> </script>
復制代碼

 

在子級頁中操作母版頁元素:

1.在母版頁中寫一個方法, 的內容是輸入外部變量來操作母版頁元素

2.在子級頁中實例化母版頁:

  1. 母版頁類型(在創建的時候取得啥名字就是啥類型)   m=this.Master as  母版頁類型;
  2. 調用母版頁的方法即可操作母版頁元素

                                         

另外,母版頁是可以嵌套的,即在原母版頁的基礎上再建立母版頁。這樣不僅進一步提高了代碼的復用,而且在使整個網站的外觀一致的基礎上,各個模塊又有自己的子風格。比如一家公司的網站整體外觀是類似的,而各個部門又有自己的子外觀。

嵌套的母版頁不會自動生成ContentPlaceHolder 控件,需要手動寫入

在引用母版頁的web窗體內引用外部JavaScript文件時,改變此窗體的路徑,引用的js路徑不會改變,方法:

在母版頁body中寫入:

<script src="<%=JS() %>"></script>

后台寫入方法;

public string  JS()

{ return ResolveClientUrl("寫入該JS相對於母版頁的路徑");

//系統會自動匹配對應路徑

}


免責聲明!

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



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