所謂主版頁面(master page)就像是一個基類,它裡面可以定義好一些內容頁,就像是定義介面一樣,如果其他頁面引用了這個主版頁面,有點繼承的味道了,那麼這個新頁面的架構必定跟主版頁面一樣,而且它改寫了內容頁的話就等於是“重載了介面”介面一樣。
很多時候,我們的網站中有很多頁面可能含有一些公用的部分,比如說,msdn裡面的header和左邊的tree。說到這個,大家可能會馬上想到
iframe,嗯!但是iframe在解決各個頁面之間傳遞資訊會比較麻煩,究竟iframe有多煩,我一時間也說不出來,看完下面的例子你可能就會明白
了。
建立一個主版頁面,就像是普通的page一樣,不過不是webform,而是masterpage,比如是test.master。然後在主版頁面裡面加入公用的部分,例如隨便加入一些table之類的東西,當然最重要的加上1個或者n個內容頁了,否則就沒有意義了,
<asp:contentplaceholder id="Main" runat="server">XXXX</asp:contentplaceholder>
注意這個id很重要,因為等一下你改寫這個內容頁也是要對應這個id的,至此,主版頁面定義完成。然後就是應用主版頁面了。
建立一個webform,引用主版頁面
<%@ Page MasterPageFile="~/test.master" %>
當然還有兩種方法全域引用和動態引用,就是在web.confing裡面或者在後台代碼指定。
下一步是指定內容頁,
<asp:Content ContentPlaceHolderID="Main" RunAt="server">
XXXXX
</asp:Content>
如果想動態改變主版頁面的公用屬性,就直接調用Master.屬性=xxx。
是不是比iframe的頁面之間互相傳參簡單很多?
當然,我最終的目的不是想說iframe將會給masterpage所替代,畢竟它們不是同一回事,很多地方用iframe更為方便,各有所長吧!
引用地址:http://guoxiaocong.cnblogs.com/archive/2005/08/31/226579.html