ASP.NET 2.0 中的創(chuàng)建母版頁(yè)
更新時(shí)間:2006年09月28日 00:00:00 作者:
雖然母版頁(yè)和內(nèi)容頁(yè)功能強(qiáng)大,但是其創(chuàng)建和應(yīng)用過(guò)程并不復(fù)雜。本節(jié)和下一節(jié)將以創(chuàng)建如圖1所示示例為例,向讀者詳細(xì)介紹,使用Visual Stuido 2005創(chuàng)建母版頁(yè)和內(nèi)容頁(yè)的方法以及相關(guān)知識(shí)。本節(jié)的重點(diǎn)是創(chuàng)建母版頁(yè)的方法。
母版頁(yè)中包含的是頁(yè)面公共部分,即網(wǎng)頁(yè)模板。因此,在創(chuàng)建示例之前,必須判斷哪些內(nèi)容是頁(yè)面公共部分,這就需要從分析頁(yè)面結(jié)構(gòu)開(kāi)始。圖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),可以打開(kāi)如圖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文件之后,接著就可以開(kāi)始編輯該文件了。根據(jù)前文說(shuō)明,母版頁(yè)中只包含頁(yè)面公共部分,因此,MasterPage.master中主要包含的是頁(yè)頭和頁(yè)尾的代碼。具體源代碼如下所示:
以上是母版頁(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)行編輯,并且它完全支持“所見(jiàn)即所得”功能。無(wú)論是在代碼模式下,還是設(shè)計(jì)模式下,使用Visual Studio 2005編輯母版頁(yè)的方法,與編輯普通.aspx文件是相同的。圖中兩個(gè)矩形框表示ContentPlaceHolder控件。開(kāi)發(fā)人員可以直接在矩形框中添加內(nèi)容,所設(shè)置內(nèi)容的代碼將包含在ContentPlaceHolder控件聲明代碼中。需要注意的是,這種方法是,不規(guī)范的,因此,不推薦使用這種做法。
母版頁(yè)中包含的是頁(yè)面公共部分,即網(wǎng)頁(yè)模板。因此,在創(chuàng)建示例之前,必須判斷哪些內(nèi)容是頁(yè)面公共部分,這就需要從分析頁(yè)面結(jié)構(gòu)開(kāi)始。圖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),可以打開(kāi)如圖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文件之后,接著就可以開(kāi)始編輯該文件了。根據(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)行編輯,并且它完全支持“所見(jiàn)即所得”功能。無(wú)論是在代碼模式下,還是設(shè)計(jì)模式下,使用Visual Studio 2005編輯母版頁(yè)的方法,與編輯普通.aspx文件是相同的。圖中兩個(gè)矩形框表示ContentPlaceHolder控件。開(kāi)發(fā)人員可以直接在矩形框中添加內(nèi)容,所設(shè)置內(nèi)容的代碼將包含在ContentPlaceHolder控件聲明代碼中。需要注意的是,這種方法是,不規(guī)范的,因此,不推薦使用這種做法。
您可能感興趣的文章:
- 詳解Asp.Net母版頁(yè)元素ID不一致的體現(xiàn)
- Asp.Net套用母版頁(yè)后元素ID不一致(個(gè)人總結(jié))
- 淺談Asp.Net母版頁(yè)和內(nèi)容頁(yè)運(yùn)行機(jī)制
- 淺談Asp.Net母版頁(yè)的相關(guān)知識(shí)
- 在ASP.NET 2.0中操作數(shù)據(jù)之三:創(chuàng)建母版頁(yè)和站點(diǎn)導(dǎo)航
- asp.net母版頁(yè)如何使用
- ASP.NET母版頁(yè)基礎(chǔ)知識(shí)介紹
- ASP.NET中母版頁(yè)和shtml實(shí)例入門(mén)
- ASP.Net巧用窗體母版頁(yè)實(shí)例
- asp.net使用母版頁(yè)中使用ajax腳本取數(shù)據(jù)
- ASP.NET下母版頁(yè)和內(nèi)容頁(yè)中的事件發(fā)生順序整理
- ASP.NET MVC使用母版頁(yè)視圖
相關(guān)文章
ASP.NET:一段比較經(jīng)典的多線程學(xué)習(xí)代碼
ASP.NET:一段比較經(jīng)典的多線程學(xué)習(xí)代碼...2006-09-09Linux上使用Docker部署ASP.NET?Core應(yīng)用程序
這篇文章介紹了使用Docker部署ASP.NET?Core應(yīng)用程序的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03ASP.NET實(shí)現(xiàn)級(jí)聯(lián)下拉框效果實(shí)例講解
這篇文章主要為大家詳細(xì)介紹了ASP.NET實(shí)現(xiàn)級(jí)聯(lián)下拉框效果實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-09-09ASP.NET Core中間件初始化的實(shí)現(xiàn)
在日常使用ASP.NET Core開(kāi)發(fā)的過(guò)程中我們多多少少會(huì)設(shè)計(jì)到使用中間件的場(chǎng)景,本文探究了ASP.NET Core中間件是如何初始化的,感興趣的可以了解一下2021-05-05如何在網(wǎng)站級(jí)別動(dòng)態(tài)更改主題
如何在網(wǎng)站級(jí)別動(dòng)態(tài)更改主題...2007-04-04利用ASP.NET MVC+EasyUI+SqlServer搭建企業(yè)開(kāi)發(fā)框架
本文主要介紹使用asp.net mvc4、sqlserver、jquery2.0和easyui1.4.5搭建企業(yè)級(jí)開(kāi)發(fā)框架的過(guò)程,希望能夠幫到大家。2016-04-04.NET微信小程序用戶數(shù)據(jù)的簽名驗(yàn)證和解密代碼
這篇文章主要介紹了.NET微信小程序用戶數(shù)據(jù)的簽名驗(yàn)證和解密代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12asp.net CheckBoxList各項(xiàng)最小寬度CSS樣式(兼容性good)
ASP.NET中,CheckBoxList里的選擇都是自動(dòng)寬度的,屬性時(shí)沒(méi)有設(shè)置各項(xiàng)寬度的設(shè)置,在IE10、遨游4極速模式及兼容模式下均可正確顯示最小寬度,此樣式除了用于CheckBoxList外,也可用于DIV等2013-04-04