雖然主版頁面和內容頁功能強大,但是其建立和應用過程並不複雜。本節和下一節將以建立1所示樣本為例,向讀者詳細介紹,使用Visual Stuido 2005建立主版頁面和內容頁的方法以及相關知識。本節的重點是建立主版頁面的方法。
主版頁面中包含的是頁面公用部分,即網頁模板。因此,在建立樣本之前,必須判斷哪些內容是頁面公用部分,這就需要從分析頁面結構開始。圖1所示顯示的是一個頁面。在下文中,暫稱該頁面名為Index.aspx,並且假設其為某網站中的一頁。通過分析可知,該頁面的結構5所示。
圖5 頁面結構圖
頁面Index.aspx由4個部分組成:頁頭、頁尾、內容1和內容2。其中頁頭和頁尾是Index.aspx所在網站中頁面的公用部分,網站中許多頁面都包含相同的頁頭和頁尾。內容1和內容2是頁面的非公用部分,是Index.aspx頁面所專屬的。結合主版頁面和內容頁的有關知識可知,如果使用主版頁面和內容頁來建立頁面Index.aspx,那麼必須建立一個主版頁面MasterPage.master和一個內容頁Index.aspx。其中主版頁面包含頁頭和頁尾等內容,內容頁中則包含內容1和內容2。
使用Visual Studio 2005建立一個普通Web網站,然後,在網站根目錄下建立一個名為MasterPage.master的主版頁面。由於這是一個添加新檔案的過程,因此,單擊“網站”命令菜單中的“添加新項..”選項,可以開啟6所示的視窗。
圖6 添加主版頁面
由於此例建立的是主版頁面,因此,需要選擇主版頁面表徵圖,並且設定檔案名稱為MasterPage.master。需要注意的是,該視窗中還有一個複選框項“將代碼放在單獨的檔案中”。預設情況下,該複選框處於選中狀態。表示Visual Studio 2005將會為MasterPage.master檔案應用程式碼後置模型,即在建立MasterPage.master檔案的基礎上,自動建立一個與該檔案相關的MasterPage.master.cs檔案。如果不選中該項,那麼只會建立一個MasterPage.master檔案而已。建議讀者選取該項。
在建立MasterPage.master檔案之後,接著就可以開始編輯該檔案了。根據前文說明,主版頁面中只包含頁面公用部分,因此,MasterPage.master中主要包含的是頁頭和頁尾的代碼。具體原始碼如下所示:
主版頁面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> |
以上是主版頁面MasterPage.master的原始碼,與普通的.aspx原始碼非常相似,例如,包括<html>、<body>、<form>等Web元素,但是,與普通頁面還是存在差異。差異主要有兩處(粗體代碼所示)。差異一是代碼頭不同,主版頁面使用的是Master,而普通.aspx檔案使用的是Page。除此之外,二者在代碼頭方面是相同的。差異二是主版頁面中聲明了控制項ContentPlaceHolder,而在普通.aspx檔案中是不允許使用該控制項的。在MasterPage.master的原始碼中,共聲明了兩個ContentPlaceHolder控制項,用於在頁面模板中為內容1和內容2佔位。ContentPlaceHolder控制項本身並不包含具體內容設定,僅是一個控制項聲明。
圖7所示,顯示了MasterPage.master檔案的設計時視圖。
圖7 主版頁面設計時視圖
使用Visual Studio 2005可以對主版頁面進行編輯,並且它完全支援“所見即所得 (WYSIWYG)”功能。無論是在代碼模式下,還是設計模式下,使用Visual Studio 2005編輯主版頁面的方法,與編輯普通.aspx檔案是相同的。圖中兩個矩形框表示ContentPlaceHolder控制項。開發人員可以直接在矩形框中新增內容,所設定內容的代碼將包含在ContentPlaceHolder控制項聲明代碼中。需要注意的是,這種方法是,不規範的,因此,不推薦使用這種做法。