除了開頭的@Master指令和一個(gè)或多個(gè)ContentPlaceHolder服務(wù)器控件外,母版頁(yè)類似于普通的ASP.NET頁(yè)。ContentPlaceHolder控件在母版頁(yè)中定義一個(gè)可以在派生頁(yè)中進(jìn)行定制的區(qū)域。
% 注意:ContentPlaceHolder控件只能在母版頁(yè)中使用。如果在平常的Web網(wǎng)頁(yè)發(fā)現(xiàn)這樣一個(gè)控件,則會(huì)發(fā)生一個(gè)解析器錯(cuò)誤。
? 內(nèi)容頁(yè)。
內(nèi)容頁(yè)與普通頁(yè)基本相同。內(nèi)容頁(yè)主要包含頁(yè)面中的非公共內(nèi)容,每個(gè)內(nèi)容頁(yè)定義一個(gè)特定的ASP.NET頁(yè)上每個(gè)區(qū)域的內(nèi)容。通過(guò)創(chuàng)建各個(gè)內(nèi)容頁(yè)來(lái)定義母版頁(yè)的占位符控件的內(nèi)容,這些內(nèi)容頁(yè)為綁定到特定母版頁(yè)的ASP.NET頁(yè)(.aspx文件以及可選的代碼隱藏文件)。內(nèi)容頁(yè)的關(guān)鍵部分是Content控件,它是其他控件的容器。Content控件只能與對(duì)應(yīng)的ContentPalceHolder控件結(jié)合使用,不是一個(gè)獨(dú)立的控件。
% 注意:內(nèi)容頁(yè)(即綁定到一個(gè)母版頁(yè)的網(wǎng)頁(yè))是一種特殊的網(wǎng)頁(yè)類型,它只能包含<asp:Content>控件。另外,它不允許在<asp:Content>標(biāo)簽外部提供服務(wù)器控件。
3.母版頁(yè)的配置
在ASP.NET 3.5中,母版頁(yè)的配置有3種級(jí)別,即頁(yè)面指令級(jí)、應(yīng)用程序級(jí)、文件夾級(jí)。
? 頁(yè)面指令級(jí)。
內(nèi)容頁(yè)通過(guò)@Page指令的MasterPageFile屬性綁定到母版頁(yè),代碼如下:
<%@ Page Language="C#" MasterPageFile="MasterPage.master"%>
? 應(yīng)用程序級(jí)。
應(yīng)用程序級(jí)綁定可以指定應(yīng)用程序中的所有網(wǎng)頁(yè)綁定到相同的母版頁(yè)。通過(guò)設(shè)置主要的Web.config配置文件的<Pages>元素的Master屬性,配置這種行為的代碼如下:
<configuration>
<system.Web>
<pages master=” MasterPage.master”
</system.Web>
</configuration>
? 文件夾級(jí)。
類似于應(yīng)用程序級(jí)的綁定,不同的是只需在一個(gè)文件夾的Web.config文件中進(jìn)行設(shè)置,然后母版頁(yè)綁定便會(huì)應(yīng)用于該文件夾中的全部ASP.NET頁(yè)。
4.創(chuàng)建母版頁(yè)
在ASP.NET 2.0中,除了具有辨識(shí)意義的@Master指令外,母版頁(yè)與標(biāo)準(zhǔn)的ASP.NET頁(yè)基本類似,唯一的重要區(qū)別就是ContentPlaceHolder服務(wù)器控件。但母版頁(yè)中包含的是頁(yè)面的公共部分,因此在創(chuàng)建母版頁(yè)之前,必須判斷哪些內(nèi)容是頁(yè)面的公共部分。
使用Visual Studio 2008創(chuàng)建母版頁(yè),具體操作步驟如下。
(1)打開Visual Stuido 2008,新建一個(gè)ASP.NET網(wǎng)站,編程語(yǔ)言采用C#。
(2)在Visual Stuido 2008環(huán)境菜單欄中選擇“網(wǎng)站”/“添加新項(xiàng)”命令,或在右擊彈出的快捷菜單中選擇“添加新項(xiàng)”命令,打開“添加新項(xiàng)”對(duì)話框,如圖1.22所示。在“模板”列表框中選擇“母版頁(yè)”選項(xiàng),在“名稱”文本框中將其命名為MasterPage.master。
(3)單擊“添加”按鈕,“母版頁(yè)”即添加到解決方案資源管理器中,如圖1.23所示。
(4)本網(wǎng)站設(shè)計(jì)后的“母版頁(yè)”如圖1.24所示。
% 注意:圖1.24中ContentPlaceHolder部分稱為占位符,具體在頁(yè)面上顯示什么內(nèi)容,則由內(nèi)容頁(yè)來(lái)決定。
5.創(chuàng)建內(nèi)容頁(yè)
在創(chuàng)建完母版頁(yè)之后,創(chuàng)建內(nèi)容頁(yè)。內(nèi)容頁(yè)的創(chuàng)建與母版頁(yè)的創(chuàng)建類似,具體步驟如下。
(1)在Visual Stuido 2008環(huán)境菜單欄中選擇“網(wǎng)站”/“添加新項(xiàng)”命令,或在右擊彈出的快捷菜單中選擇“添加新項(xiàng)”命令,打開“添加新項(xiàng)”對(duì)話框,如圖1.25所示。在“模板”列表框中選擇“Web窗體”選項(xiàng),在“名稱”文本框中將其命名為Default.aspx,同時(shí)選中“將代碼放在單獨(dú)的文件中”和“選擇母版頁(yè)”復(fù)選框。
注意:(1)內(nèi)容頁(yè)與普通.aspx頁(yè)面的擴(kuò)展名相同。
(2)選中“將代碼放在單獨(dú)的文件中”和“選擇母版頁(yè)”復(fù)選框可以將內(nèi)容頁(yè)與母版頁(yè)綁定。
(2)單擊“添加”按鈕,打開“選擇母版頁(yè)”對(duì)話框,如圖1.26所示。在該對(duì)話框中選擇上面創(chuàng)建的母版頁(yè),單擊“添加”按鈕,就可以創(chuàng)建一個(gè)新的內(nèi)容頁(yè)。
(3)通過(guò)“母版頁(yè)”生成的頁(yè)面如圖1.27所示。
注意:(1)內(nèi)容頁(yè)中可以有多個(gè)Content服務(wù)器控件,但內(nèi)容頁(yè)里的Content服務(wù)器控件的
ContentPlaceHolderID屬性值必須與母版頁(yè)中的ContentPlaceHolder服務(wù)器控件的ID屬性匹配。
(2)由于母版頁(yè)里定義了頁(yè)面的標(biāo)題title元素,不同的內(nèi)容頁(yè)顯示的標(biāo)題可能不同,此時(shí)需要在內(nèi)容頁(yè)中設(shè)置頁(yè)面的標(biāo)題,可以通過(guò)設(shè)置頁(yè)面指令的Title屬性定義。
(3)與母版頁(yè)一樣,Visual Studio 2008支持對(duì)于內(nèi)容頁(yè)的可視化編輯,并且這種支持是建立在只讀顯示母版頁(yè)內(nèi)容基礎(chǔ)上的。在編輯狀態(tài)下,可以查看母版頁(yè)和內(nèi)容頁(yè)組合后的頁(yè)面外觀,但是,母版頁(yè)內(nèi)容是只讀的(呈灰色部分),不可被編輯,而內(nèi)容頁(yè)則可以進(jìn)行編輯。如果需要修改母版頁(yè)內(nèi)容,則必須打開母版頁(yè)。