吳金秀
(黃岡職業(yè)技術(shù)學(xué)院,湖北 黃岡 438000)
大多數(shù)Web站點(diǎn)都是所有頁面采用一種布局,使整個(gè)網(wǎng)站具有統(tǒng)一的風(fēng)格和外觀,實(shí)現(xiàn)良好的用戶體驗(yàn)。ASP.NET自2.0以后的版本中提供了母版頁技術(shù),可將站點(diǎn)的整體布局在母版中進(jìn)行規(guī)劃與實(shí)現(xiàn),將每個(gè)頁面的公共部分,如網(wǎng)站的logo、banner、版權(quán)聲明等內(nèi)容設(shè)計(jì)到母版頁中,再基于母版頁創(chuàng)建不同的內(nèi)容頁,以實(shí)現(xiàn)Web站點(diǎn)的一致布局與風(fēng)格。
運(yùn)用母版頁技術(shù)的頁面由兩個(gè)部分組成:母版頁和內(nèi)容頁。
母版頁的文件后綴名為.master,它主要是對整個(gè)站點(diǎn)的整體布局進(jìn)行規(guī)劃與設(shè)計(jì),包含整個(gè)站點(diǎn)的公共部分。內(nèi)容頁的文件類型為.a(chǎn)spx,它設(shè)計(jì)頁面的不同內(nèi)容。當(dāng)用戶請求內(nèi)容頁時(shí),這些內(nèi)容頁與母版頁合并后將母版頁的布局與內(nèi)容頁的內(nèi)容組合在一起輸出。
母版頁技術(shù)能很好地實(shí)現(xiàn)界面設(shè)計(jì)的模塊化,降低開發(fā)人員的工作強(qiáng)度,其優(yōu)勢主要包括:
(1)實(shí)現(xiàn)了代碼的重用,即同一個(gè)母版頁可用于同一站點(diǎn)的不同頁面;
(2)有利于實(shí)現(xiàn)頁面布局,提供一種便于利用的對象模型;
(3)有利于站點(diǎn)修改和維護(hù),如果母版頁更新了,所有的網(wǎng)頁都會(huì)隨之更新。
母版頁的設(shè)計(jì)與普通頁面的設(shè)計(jì)一樣。它的“源”文件中除包含一個(gè)完整頁面文件的基本元素之外,還包含一個(gè)或幾個(gè)ContentPlaceHolder控件,Content PlaceHolder控件是為內(nèi)容頁預(yù)留的,這樣母版頁的設(shè)計(jì)就是對整個(gè)站點(diǎn)的統(tǒng)一規(guī)劃與設(shè)計(jì)。它相當(dāng)于頁面的模板,方便用戶的規(guī)劃與設(shè)計(jì),但不能獨(dú)立運(yùn)行。
圖1 母版頁的工作原理
內(nèi)容頁的設(shè)計(jì)在可視化的界面中,母版頁以水印淡化的形式顯示出來,在內(nèi)容頁中母版頁的內(nèi)容是不可編輯的。內(nèi)容頁的設(shè)計(jì)在Content控件中進(jìn)行,Contnet控件就是與之相對應(yīng)的母版頁的Content Place Holder控件。如圖1所示,母版頁文件 A.master中有兩個(gè)占位符,id分別是“Main”和“Footer”,內(nèi)容A.a(chǎn)spx文件中有兩個(gè)Content控件,Content Place Holder Id 分別為“Main”和“Footer”,分別替換母版頁中id為“Main”和“Footer”的占位符。當(dāng)客戶端瀏覽器向服務(wù)器發(fā)出請求,ASP.NET引擎將同時(shí)執(zhí)行內(nèi)容頁和母版頁的代碼,并將最終結(jié)果發(fā)送到客戶端瀏覽器。
(1)通過內(nèi)容頁P(yáng)age對象有一個(gè)公共屬性Master。
內(nèi)容頁P(yáng)age對象的屬性Master能夠?qū)崿F(xiàn)對相關(guān)母版頁基類Master Page的引用,由此可以用Master Page實(shí)現(xiàn)對母版頁各個(gè)子對象的訪問,Master Page的Find Control方法找到母版頁中的控件的引用,并返回相應(yīng)Object類型的對象。例如,母版頁有個(gè)Label1控件,在內(nèi)容頁中將Label1中的內(nèi)容顯示在內(nèi)容頁的TextBox1控件中,方法為:
Text Box1.Text= ((Label)((Master Page)Master).Find Control("Label1")).Text;
(2)通過Master Type指令創(chuàng)建與內(nèi)容頁相關(guān)的母版頁的強(qiáng)類型引用。
在使用該指令時(shí),通過設(shè)置Virtual Paht屬性指定一個(gè)與內(nèi)容頁相關(guān)的母版頁的存儲(chǔ)地址。當(dāng)該內(nèi)容頁創(chuàng)建自己的Master屬性時(shí),屬性的值被設(shè)置為引用的母版頁的存儲(chǔ)地址。例如,在母版頁中加一個(gè)id為Label1的標(biāo)簽,并在后臺(tái)代碼中定義具有公共屬性的Label,方法為:
在內(nèi)容頁面中的“源”文件頭@page后添加Master Type指令<%@Master Type Virtual Path="~/Master Page1.master"%>,在內(nèi)容頁中可以通過Master對象的Master Label屬性來引用母版頁中的Label1控件。如設(shè)置母版頁中的Label1的文本為當(dāng)前時(shí)間,代碼為:
Master.Master Label.Text= System.Date Time.Now.To String();
在母版頁中可以通過在Content Place Holder控件中調(diào)用Find Control方法來取得控件,然后對控件進(jìn)行操作。如將母版頁中Label1中的文本賦值給內(nèi)容頁的Text Box1控件。
((Text Box)(this.Content Place Holder1.Find-Control("Text Box1"))).Text=Label1.Text;
本文從母版頁運(yùn)行的原理以及母版與內(nèi)容頁面通信的角度,總結(jié)了母版頁技術(shù)的應(yīng)用方法,解決了母版頁使用繁瑣的問題。以編程方式來動(dòng)態(tài)設(shè)置母版頁,使得在Web站點(diǎn)設(shè)計(jì)中,為用戶提供一個(gè)統(tǒng)一的用戶界面與風(fēng)格樣式,并確保內(nèi)容頁和所設(shè)置的母版頁完全兼容。
[1]神龍工作室.新編ASP.NET 2.0網(wǎng)絡(luò)編程入門與提高[M].北京:人民郵電出版社,2008.
[2]達(dá)內(nèi)科技.a(chǎn)sp.net母版和內(nèi)容頁執(zhí)行順序[EB/OL].[2011-09-3].http://www.tarenasz.com/tech/net/722.html.
[3]MSDN.msdn技術(shù)資源庫·ASP.NET母版頁概述[EB/OL].[2012-03-23].http://msdn.microsoft.com/zh-cn/library/wtxbf3hh(v=vs.80).