ASP.NET網(wǎng)頁(yè)模板基礎(chǔ)知識(shí)介紹
在一個(gè)網(wǎng)站中,往往各個(gè)頁(yè)面都具有相同的部分,比如:頁(yè)眉、頁(yè)腳,頁(yè)眉展示網(wǎng)站標(biāo)識(shí)、導(dǎo)航欄等,頁(yè)腳展示版權(quán)等,如果每一個(gè)頁(yè)面都直接寫(xiě)入這些內(nèi)容勢(shì)必給開(kāi)發(fā)和維護(hù)帶來(lái)巨大的困難。
在 ASP 中,我們常使用 include 包含文件來(lái)解決,在 ASP.NET 中,我們利用網(wǎng)頁(yè)模板來(lái)解決,步驟很簡(jiǎn)單:
首先建立一個(gè)母版頁(yè)( .master 文件)。
然后建立一個(gè)內(nèi)容頁(yè),用內(nèi)容頁(yè)去“實(shí)例化”母版。
母版頁(yè)
打開(kāi) Visual Web Developer,新建一個(gè) .master 文件,可以看到其編譯指令是 Master,而不是 Page,母版頁(yè)中最重要的控件是 ContentPlaceHolder,它將受引用母版的文件的控制,下面的示例中我們用了三個(gè) ContentPlaceHolder。
- 〈%@ Master Language="C#" %〉
- 〈!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
- Transitional//EN" "http://www.w3.org/TR/
- xhtml1/DTD/xhtml1-transitional.dtd"〉
- 〈script runat="server"〉
- 〈/script〉
- 〈html xmlns="http://www.w3.org/1999/xhtml" 〉
- 〈head runat="server"〉
- 〈title〉Untitled Page〈/title〉
- 〈/head〉
- 〈body〉
- 〈form id="form1" runat="server"〉
- 〈div〉
- 〈asp:ContentPlaceHolder id="m_header"
- runat="server"〉
- 〈asp:BulletedList ID="nav" runat="server"〉
- 〈asp:ListItem Text="導(dǎo)航一"〉〈/asp:ListItem〉
- 〈asp:ListItem Text="導(dǎo)航二"〉〈/asp:ListItem〉
- 〈/asp:BulletedList〉
- 〈/asp:ContentPlaceHolder〉
- 〈asp:ContentPlaceHolder ID="m_content"
- runat="server"〉
- 〈/asp:ContentPlaceHolder〉
- 〈asp:ContentPlaceHolder ID="m_footer"
- runat="server"〉
- 〈p〉版權(quán)所有〈/p〉
- 〈/asp:ContentPlaceHolder〉
- 〈/div〉
- 〈/form〉
- 〈/body〉
- 〈/html〉
內(nèi)容頁(yè)
打開(kāi) Visual Web Developer,新建一個(gè) .aspx 文件,除了編譯指令,其它全部刪除。
指定 MasterPageFile 和 Title。MasterPageFile 表示使用哪個(gè)母版文件,Title 相當(dāng)于 HTML 中的 〈title〉〈/title〉。
插入 Content 控件,并在 Content 控件中指定 ContentPlaceHolderID 表示要用這個(gè) Content 中的內(nèi)容替換母版中的 ContentPlaceHolderID 中的內(nèi)容。注意,并不需要處理母版文件中的每一個(gè) ContentPlaceHolder,如果沒(méi)有對(duì)應(yīng)的 Content,則 ContentPlaceHolder 使用母版文件中標(biāo)明的內(nèi)容。文件代碼如下:
- 〈%@ Page Language="C#"
- MasterPageFile="MasterPage1.master" Title="首頁(yè)" %〉
- 〈asp:Content ID="content" runat="server"
- ContentPlaceHolderID="m_content"〉
- 〈p〉這里是首頁(yè)的內(nèi)容〈/p〉
- 〈/asp:Content〉
完成
至此,一個(gè)最基本的 ASP.NET 模板應(yīng)用就介紹完了。ASP.NET 模板還有許多細(xì)節(jié)與高級(jí)的東西,我們會(huì)在以后的文章中對(duì)ASP.NET頁(yè)面模版做更多的介紹。。
【編輯推薦】