雖然母版頁和內容頁功能強大,但是其創建和應用過程並不復雜。本節和下一節將以創建如圖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可以對母版頁進行編輯,並且它完全支持“所見即所得”功能。無論是在代碼模式下,還是設計模式下,使用Visual Studio 2005編輯母版頁的方法,與編輯普通.aspx文件是相同的。圖中兩個矩形框表示ContentPlaceHolder控件。開發人員可以直接在矩形框中添加內容,所設置內容的代碼將包含在ContentPlaceHolder控件聲明代碼中。需要注意的是,這種方法是,不規范的,因此,不推薦使用這種做法。