吳金秀
(黃岡職業(yè)技術學院,湖北 黃岡 438000)
大多數(shù)Web站點都是所有頁面采用一種布局,使整個網(wǎng)站具有統(tǒng)一的風格和外觀,實現(xiàn)良好的用戶體驗。ASP.NET自2.0以后的版本中提供了母版頁技術,可將站點的整體布局在母版中進行規(guī)劃與實現(xiàn),將每個頁面的公共部分,如網(wǎng)站的logo、banner、版權聲明等內(nèi)容設計到母版頁中,再基于母版頁創(chuàng)建不同的內(nèi)容頁,以實現(xiàn)Web站點的一致布局與風格。
運用母版頁技術的頁面由兩個部分組成:母版頁和內(nèi)容頁。
母版頁的文件后綴名為.master,它主要是對整個站點的整體布局進行規(guī)劃與設計,包含整個站點的公共部分。內(nèi)容頁的文件類型為.a(chǎn)spx,它設計頁面的不同內(nèi)容。當用戶請求內(nèi)容頁時,這些內(nèi)容頁與母版頁合并后將母版頁的布局與內(nèi)容頁的內(nèi)容組合在一起輸出。
母版頁技術能很好地實現(xiàn)界面設計的模塊化,降低開發(fā)人員的工作強度,其優(yōu)勢主要包括:
(1)實現(xiàn)了代碼的重用,即同一個母版頁可用于同一站點的不同頁面;
(2)有利于實現(xiàn)頁面布局,提供一種便于利用的對象模型;
(3)有利于站點修改和維護,如果母版頁更新了,所有的網(wǎng)頁都會隨之更新。
母版頁的設計與普通頁面的設計一樣。它的“源”文件中除包含一個完整頁面文件的基本元素之外,還包含一個或幾個ContentPlaceHolder控件,Content PlaceHolder控件是為內(nèi)容頁預留的,這樣母版頁的設計就是對整個站點的統(tǒng)一規(guī)劃與設計。它相當于頁面的模板,方便用戶的規(guī)劃與設計,但不能獨立運行。

圖1 母版頁的工作原理
內(nèi)容頁的設計在可視化的界面中,母版頁以水印淡化的形式顯示出來,在內(nèi)容頁中母版頁的內(nèi)容是不可編輯的。內(nèi)容頁的設計在Content控件中進行,Contnet控件就是與之相對應的母版頁的Content Place Holder控件。如圖1所示,母版頁文件 A.master中有兩個占位符,id分別是“Main”和“Footer”,內(nèi)容A.a(chǎn)spx文件中有兩個Content控件,Content Place Holder Id 分別為“Main”和“Footer”,分別替換母版頁中id為“Main”和“Footer”的占位符。當客戶端瀏覽器向服務器發(fā)出請求,ASP.NET引擎將同時執(zhí)行內(nèi)容頁和母版頁的代碼,并將最終結果發(fā)送到客戶端瀏覽器。
(1)通過內(nèi)容頁Page對象有一個公共屬性Master。
內(nèi)容頁Page對象的屬性Master能夠實現(xiàn)對相關母版頁基類Master Page的引用,由此可以用Master Page實現(xiàn)對母版頁各個子對象的訪問,Master Page的Find Control方法找到母版頁中的控件的引用,并返回相應Object類型的對象。例如,母版頁有個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)容頁相關的母版頁的強類型引用。
在使用該指令時,通過設置Virtual Paht屬性指定一個與內(nèi)容頁相關的母版頁的存儲地址。當該內(nèi)容頁創(chuàng)建自己的Master屬性時,屬性的值被設置為引用的母版頁的存儲地址。例如,在母版頁中加一個id為Label1的標簽,并在后臺代碼中定義具有公共屬性的Label,方法為:

在內(nèi)容頁面中的“源”文件頭@page后添加Master Type指令<%@Master Type Virtual Path="~/Master Page1.master"%>,在內(nèi)容頁中可以通過Master對象的Master Label屬性來引用母版頁中的Label1控件。如設置母版頁中的Label1的文本為當前時間,代碼為:
Master.Master Label.Text= System.Date Time.Now.To String();
在母版頁中可以通過在Content Place Holder控件中調(diào)用Find Control方法來取得控件,然后對控件進行操作。如將母版頁中Label1中的文本賦值給內(nèi)容頁的Text Box1控件。
((Text Box)(this.Content Place Holder1.Find-Control("Text Box1"))).Text=Label1.Text;
本文從母版頁運行的原理以及母版與內(nèi)容頁面通信的角度,總結了母版頁技術的應用方法,解決了母版頁使用繁瑣的問題。以編程方式來動態(tài)設置母版頁,使得在Web站點設計中,為用戶提供一個統(tǒng)一的用戶界面與風格樣式,并確保內(nèi)容頁和所設置的母版頁完全兼容。
[1]神龍工作室.新編ASP.NET 2.0網(wǎng)絡編程入門與提高[M].北京:人民郵電出版社,2008.
[2]達內(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技術資源庫·ASP.NET母版頁概述[EB/OL].[2012-03-23].http://msdn.microsoft.com/zh-cn/library/wtxbf3hh(v=vs.80).