|
母版頁(yè)中包含的是頁(yè)面公共部分,即網(wǎng)頁(yè)模板。因此,在創(chuàng)建示例之前,必須判斷哪些內(nèi)容是頁(yè)面公共部分,這就需要從分析頁(yè)面結(jié)構(gòu)開始。圖1所示顯示的是一個(gè)頁(yè)面截圖。在下文中,暫稱該頁(yè)面名為Index.ASPx,并且假設(shè)其為某網(wǎng)站中的一頁(yè)。通過(guò)分析可知,該頁(yè)面的結(jié)構(gòu)如圖5所示。

圖5 頁(yè)面結(jié)構(gòu)圖
頁(yè)面Index.ASPx由4個(gè)部分組成:頁(yè)頭、頁(yè)尾、內(nèi)容1和內(nèi)容2。其中頁(yè)頭和頁(yè)尾是Index.ASPx所在網(wǎng)站中頁(yè)面的公共部分,網(wǎng)站中許多頁(yè)面都包含相同的頁(yè)頭和頁(yè)尾。內(nèi)容1和內(nèi)容2是頁(yè)面的非公共部分,是Index.ASPx頁(yè)面所獨(dú)有的。結(jié)合母版頁(yè)和內(nèi)容頁(yè)的有關(guān)知識(shí)可知,如果使用母版頁(yè)和內(nèi)容頁(yè)來(lái)創(chuàng)建頁(yè)面Index.ASPx,那么必須創(chuàng)建一個(gè)母版頁(yè)MasterPage.master和一個(gè)內(nèi)容頁(yè)Index.ASPx。其中母版頁(yè)包含頁(yè)頭和頁(yè)尾等內(nèi)容,內(nèi)容頁(yè)中則包含內(nèi)容1和內(nèi)容2。
使用Visual Studio 2005創(chuàng)建一個(gè)普通Web站點(diǎn),然后,在站點(diǎn)根目錄下創(chuàng)建一個(gè)名為MasterPage.master的母版頁(yè)。由于這是一個(gè)添加新文件的過(guò)程,因此,單擊“網(wǎng)站”命令菜單中的“添加新項(xiàng)..”選項(xiàng),可以打開如圖6所示的窗口。

圖6 添加母版頁(yè)
由于此例創(chuàng)建的是母版頁(yè),因此,需要選擇母版頁(yè)圖標(biāo),并且設(shè)置文件名為MasterPage.master。需要注意的是,該窗口中還有一個(gè)復(fù)選框項(xiàng)“將代碼放在單獨(dú)的文件中”。默認(rèn)情況下,該復(fù)選框處于選中狀態(tài)。表示Visual Studio 2005將會(huì)為MasterPage.master文件應(yīng)用代碼隱藏模型,即在創(chuàng)建MasterPage.master文件的基礎(chǔ)上,自動(dòng)創(chuàng)建一個(gè)與該文件相關(guān)的MasterPage.master.cs文件。如果不選中該項(xiàng),那么只會(huì)創(chuàng)建一個(gè)MasterPage.master文件而已。建議讀者選取該項(xiàng)。
在創(chuàng)建MasterPage.master文件之后,接著就可以開始編輯該文件了。根據(jù)前文說(shuō)明,母版頁(yè)中只包含頁(yè)面公共部分,因此,MasterPage.master中主要包含的是頁(yè)頭和頁(yè)尾的代碼。具體源代碼如下所示:
母版頁(yè)MasterPage.master文件源代碼 |
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title></title> <link href="css/myfreetemplates.css" rel="stylesheet" type="text/css" /> </head> <body background="http://www.68design.NET/art/images/pixi_lime.gif" leftmargin="0" topmargin="0"> <form id="form1" runat="server"> <div align="center"> <table width="763" height="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td width="763" height="86" align="right" valign="top"> <img src="http://www.68design.NET/art/images/topic.gif"></td> </tr> <tr> <td width="763" height="53" align="right" valign="bottom" background="images/nav_bg.gif"></td> </tr> <tr> <td width="763" height="22" align="right" valign="top"><img src="http://www.68design.NET/art/images/toppic2.gif" width="763" height="22"></td> </tr> <tr> <td width="763" valign="top"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="244" valign="top"> <ASP:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"></ASP:ContentPlaceHolder> </td> <td valign="top" align="left"> <ASP:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server"></ASP:ContentPlaceHolder> </td> </tr> </table> </td> </tr> <tr> <td width="763" height="1" background="http://www.68design.NET/art/images/pixi_lime.gif"><img src="http://www.68design.NET/art/images/pixi_lime.gif" width="1" height="1"></td> </tr> <tr> <td width="763" height="35" align="center" class="baseline">©Copyright Study.Com 2006</td> </tr> </table> </div> </form> </body></html> |
以上是母版頁(yè)MasterPage.master的源代碼,與普通的.ASPx源代碼非常相似,例如,包括<html>、<body>、<form>等Web元素,但是,與普通頁(yè)面還是存在差異。差異主要有兩處(粗體代碼所示)。差異一是代碼頭不同,母版頁(yè)使用的是Master,而普通.ASPx文件使用的是Page。除此之外,二者在代碼頭方面是相同的。差異二是母版頁(yè)中聲明了控件ContentPlaceHolder,而在普通.ASPx文件中是不允許使用該控件的。在MasterPage.master的源代碼中,共聲明了兩個(gè)ContentPlaceHolder控件,用于在頁(yè)面模板中為內(nèi)容1和內(nèi)容2占位。ContentPlaceHolder控件本身并不包含具體內(nèi)容設(shè)置,僅是一個(gè)控件聲明。
圖7所示,顯示了MasterPage.master文件的設(shè)計(jì)時(shí)視圖。

圖7 母版頁(yè)設(shè)計(jì)時(shí)視圖
使用Visual Studio 2005可以對(duì)母版頁(yè)進(jìn)行編輯,并且它完全支持“所見即所得”功能。無(wú)論是在代碼模式下,還是設(shè)計(jì)模式下,使用Visual Studio 2005編輯母版頁(yè)的方法,與編輯普通.ASPx文件是相同的。圖中兩個(gè)矩形框表示ContentPlaceHolder控件。開發(fā)人員可以直接在矩形框中添加內(nèi)容,所設(shè)置內(nèi)容的代碼將包含在ContentPlaceHolder控件聲明代碼中。需要注意的是,這種方法是,不規(guī)范的,因此,不推薦使用這種做法。
AspNet技術(shù):ASP.NET 2.0 中的創(chuàng)建母版頁(yè),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。