如何使用 MasterPage

2021-04-13 22:15:19 字數 2911 閱讀 4187

如何使用 masterpage

1. 建立 masterpage,字尾名 .master, 如 x.master.

其中用 定義空位。如:

2. 建立內容頁面。

在 newitem 對話方塊裡選擇 "select master page", 選擇上一步建立的 masterpage.

產生的**裡, masterpagefile 屬性指定了 masterpage 的位置:

<%@ page language="vb" masterpagefile="~/x.master" title="無標題頁面" %>

頁面裡用 來新增內容到對應的空位:

內容內容頁面沒有

3. 利用 masterpage 可以使用多種語言來編寫乙個頁面的各個部分。

4. 除了在 <%@ page %> 裡面指定 masterpage, 也可以在 web.config 指定:

這樣定義後,如果建立 page 時選擇了 master page, 則在 <%@ page %> 裡面不需要指定即可使用該 masterpage.

其他頁面要使用不同的 masterpage 的話,只要用第一種方法在 page directive 裡面明確的覆蓋 web.config 裡的設定即可。

可以僅對一組 pages 指定 masterpage. 下例利用 web.config 的 location 元素,設定了 admin 目錄下的頁面採用的不同的 masterpage.

5. 在內容頁面如何設定 page 的 title ?

預設情況下,title 在 masterpage 中指定後,其他具體頁面就都使用這個 title.

在具體頁面,可以有兩個辦法修改 title:

a. <%@ page title="test" %>

b. **中:

protected void page_loadcomplete(object sender, eventargs e)

6. 訪問 masterpage 中的屬性和控制項。

用 master 屬性來訪問。

a. 假設 masterpage 中有乙個 label1, 那麼在內容頁面可以這樣:

protected void page_loadcomplete(object sender, eventargs e)

頁面載入的次序:

要獲取在 masterpage 的 page_load 裡面設定的值,必須在內容頁面的 page_loadcomplete 中來寫。

前面提到的 findcontrol() 方法來查詢 masterpage 中的控制項,是一種後期繫結的做法,一般是不安全的。因為這取決於 masterpage 中是否存在這個 tag,如果被刪除了,則會導致錯誤。

比較好的做法是,在 masterpage 中用屬性封裝對他的控制項的訪問;如果用 findcontrol(), 則總是檢查其結果是否為 null.

7. 指定 masterpage 中的預設內容

直接在 標籤之間指定即可。

如果子頁面不重新指定,則會採用該預設內容。

8. 程式設計的方式指定 master page

protected void page_preinit(object sender, eventargs e)

9. 巢狀的 master page

master page 可以繼承自更高層次的 master page. 但是在 vs2005 中建立這種子 master page 的時候,不會有預設的支援。

假設有了乙個 a.master,

我們現在先建立乙個普通的 b.master,

然後刪除其中除了 page directive 的其他部分。

把 page directive 修改為如下,並加入自己要定義的 placeholder:

<%@ master masterpagefile="~/a.master" %>

hello!

用巢狀的模板產生的子頁面將不能採用 vs2005 的 design 模式。

10. 容器特定的 master pages

為了能相容不同的瀏覽器,asp.net 2.0 支援多個 master page. 在執行時將自動載入合適的 master page.

語法如下:

<%@ page language="vb" masterpagefile="~/abc.master"

mozilla:masterpagefile="~/abcmozilla.master"

opera:masterpagefile="~/abcmozilla.master" %>

11. 頁面請求的次序

當使用者請求乙個用 master page 構建的頁面時,各種事件發生的次序如下:

master page 子控制項初始化;

內容頁面子控制項初始化;

master page 初始化;

內容頁面初始化;

內容頁面 page_load;

master page 的 page_load;

master page 子控制項載入;

內容頁面子控制項載入;

注意點:

因為內容頁面的 page_load 先於 master page 的 page_load,所以,如果要訪問 master page 裡的伺服器控制項,則必須在內容頁面的 page_loadcomplete 方法裡書寫**。

12. 使用快取

只有在內容頁面才可以使用如下的 directive 指定快取:

<%@ outputcache duration="10" varybyparam="none" %>

(這個指令讓伺服器在記憶體裡快取該頁面 10 秒鐘)

如果對 master page 指定該指令,本身並不會引發錯誤。但是當他的子頁面下一次來獲取其 master page 的時候,如果這時 master page 已經過期,則會引發乙個錯誤。

所以實際上只能對子頁面指定快取。

如何使用 MasterPage

1.建立 masterpage,字尾名 master,如 x.master.其中用 定義空位。如 2.建立內容頁面。在 newitem 對話方塊裡選擇 select master page 選擇上一步建立的 masterpage.產生的 裡,masterpagefile 屬性指定了 masterpa...

Master Page主題以及面板的使用

2008年01月09日 星期三 上午 10 35 一 主題 經常看到 上可以由使用者自定義顯示樣式,當然這些多半是 已提供的,如126郵箱。這其實是採用了多種主題來實現的,主題應該都明白是什麼吧,不明白就看下window的主題。示例 在 專案中,新增主題資料夾,取個名字,這樣就新增了乙個主題,乙個主...

MasterPage 控制項應用

masterpage其實是一種模板,它可以讓你快速的建立相同頁面布局而內部不同的網頁,如果乙個 有多個masterpage,那麼新建aspx檔案的時候就可以選擇需要實現頁面布局的masterpage。另外,在你沒有使用masterpage之前,如果n個相同的頁面布局需要改動成另外乙個樣式,那麼你就要...