1、在創(chuàng)建大型的站點時,常需要創(chuàng)建多層的母版頁??梢詫δ赴骓撨M行不限級的嵌套。 <%@ Master Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="SectionProducts.master.cs" Inherits="SectionProducts" %>
MasterPageFile 指定了母版頁。2、在母版頁中使用圖片和超鏈接。 在母版頁中使用url需要十分小心。根據(jù)使用的是html控件和asp.net控件,相對URL會有不同的解析方式。 如果使用ASP.NET控件,相對URL會解析為相對于母版頁的URL。 如果使用HTML標簽,情況就會完全不同。如果在<img>或<a>之類的HTML標簽中使用相對URL,這個相對URL會解析為相對內容頁的URL。 為解決html標簽中的問題,可以使用asp.net控件或者使用絕對路徑(不推薦) 3、在web配置文件中注冊母版頁 在web配置文件中寫的配置母版頁信息應用到與web配置文件位于同一文件夾(或其子文件夾)中的所有頁面 - <configuration>
- <system.web>
- <pages masterPageFile="~/SimpleMaster.master"></pages>
- </system.web>
- </configuration>
4、如果想在內容頁修改母版頁內容,可以使用title,page header屬性,暴露母版頁屬性,對母版頁使用FindControl方法 來修改。具體google。5、動態(tài)加載母版頁,來修改整個網(wǎng)站的風格。 動態(tài)修改一個頁面 Dynamic1.master: - <%@ Page Language="C#" MasterPageFile="~/Dynamic1.master" %>
- <script runat="server">
-
- protected void Page_PreInit(object sender, EventArgs e)
- {
- if (Request["master"] != null)
- {
- switch (Request["master"])
- {
- case "Dynamic1":
- Profile.MasterPageFile = "Dynamic1.master";
- break;
- case "Dynamic2":
- Profile.MasterPageFile = "Dynamic2.master";
- break;
- }
- }
-
- MasterPageFile = Profile.MasterPageFile;
- }
- </script>
-
- <asp:Content
- ID="Content1"
- ContentPlaceHolderID="ContentPlaceHolder1"
- Runat="Server">
-
- Select a Master Page:
- <ul class="selectMaster">
- <li>
- <a href="DynamicContent.aspx?master=Dynamic1">Dynamic Master 1</a>
- </li>
- <li>
- <a href="DynamicContent.aspx?master=Dynamic2">Dynamic Master 2</a>
- </li>
- </ul>
-
- </asp:Content>
因為母版頁的名稱賦值給了profile屬性,所以用戶很久以后再回到此網(wǎng)站,仍然會加載此用戶以前使用過的母版頁。Profile對象可以在用戶多次訪問同一個站點時自動維護它的屬性,Profile的定義在下邊的配置文件中
web配置文件 - <system.web>
- <profile>
- <properties>
- <add name="MasterPageFile" defaultValue="Dynamic1.master"/>
- </properties>
- </profile>
- </system.web>
如需要對站點中的所有內容都動態(tài)加載母版頁,最簡單的方式時建一個page基類。放在App_Code文件夾中 DynamicMasterPage.cs - using System;
- using System.Web.UI;
- using System.Web.Profile;
-
- public class DynamicMasterPage : Page
- {
-
- protected override void OnPreInit(EventArgs e)
- {
- this.MasterPageFile = (string)Context.Profile["MasterPageFile"];
- base.OnPreInit(e);
- }
-
- }
創(chuàng)建新的Page基類以后,還需要在web配置中注冊它。- <configuration>
- <system.web>
- <pages pageBaseType="DynamicMasterPage" />
- <profile>
- <properties>
- <add name="MasterPageFile" defaultValue="Dynamic1.master"/>
- </properties>
- </profile>
- </system.web>
- </configuration>
|