標籤:charset 應用程式 javascrip 元素 -- 複用 java 分網 efi
首先來說一下什麼是主版頁面:
- 主版頁面可以為應用程式中的頁建立一致的布局。單個主版頁面可以為應用程式中的所有頁(或一組頁)定義所需的外觀和標準行為。
- 主版頁面的使用與普通頁面類似,可以在其中放置檔案或者圖形、任何的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.在子級頁中執行個體化主版頁面:
- 主版頁面類型(在建立的時候取得啥名字就是啥類型) m=this.Master as 主版頁面類型;
- 調用主版頁面的方法即可操作主版頁面元素
另外,主版頁面是可以嵌套的,即在原主版頁面的基礎上再建立主版頁面。這樣不僅進一步提高了代碼的複用,而且在使整個網站的外觀一致的基礎上,各個模組又有自己的子風格。比如一家公司的網站整體外觀是類似的,而各個部門又有自己的子外觀。
嵌套的主版頁面不會自動產生ContentPlaceHolder 控制項,需要手動寫入
在引用主版頁面的web表單內引用外部JavaScript檔案時,改變此表單的路徑,引用的js路徑不會改變,方法:
在主版頁面body中寫入:
<script src="<%=JS() %>"></script>
後台寫入方法;
public string JS()
{ return ResolveClientUrl("寫入該JS相對於主版頁面的路徑");
//系統會自動匹配對應路徑
}
WebForm 主版頁面使用