1、使用母片的時候,內容的Content控制項必須與主版頁面的ContentPlaceHolder控制項一一對應,不能多隻能少。
2、主版頁面的ContentPlaceHolder控制項如果有預設內容,內容頁如果沒有Content控制項與之對應,則顯示主版頁面的內容。否則,即使Content控制項的內容為空白,也不會顯示主版頁面的預設內容。
3、如果內容頁要與主版頁面的某個控制項互動(其它互動類似),步驟如下:
1)在主版頁面類代碼中建立一個public屬性,它的get、set和該控制項的值對應起來。(假如主版頁面有個控制項ID為masterlbl)
public string Masterlbl { get { return masterlbl.Text; } set { masterlbl.Text = value; } }
2)在內容頁類中要可以如下調用
((MyMaster) Master).Masterlbl = "test";
這裡的Master是母片類的一個對象,需要把它轉換成對應的母片的類型才能進行互動!當然還有其它方法,但這個方法最方便。這樣就可以修改母片中控制項masterlbl的值啦。
4、母片和母片是可以嵌套的,嵌套的時候子主版頁面也要跟內容頁一樣要有Content控制項與父主版頁面對應。使用子主版頁面的內容頁就不用有Content控制項去跟上一級母片對應了,只要對應它的本身的主版頁面的ContentPlaceHolder控制項就行了。如果子母片中要有ContentPlaceHolder控制項,則必須放置在與父母片對應的Content控制項中,如下
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <asp:ContentPlaceHolder runat="server" ID="ContentPlaceHolder2"></asp:ContentPlaceHolder></asp:Content>
內容頁主要與ContentPlaceHolder2對應即可!
5、主版頁面相對路徑問題
假如主版頁面中有一個圖片
<img src="t.jpg" />
如果母片與圖片在同一級目錄,而內容頁與圖片不同,那圖片將會顯示不出來,因為圖片的地址會被內容頁替換成相對內容頁的地址。
解決方案:
1)使用完整路徑<%=ResolveUrl("~/Scripts/jquery-1.4.1.min.js") %> (最好)
2)使用伺服器控制項代替(js和css非控制項解決不了)