1、在創(chuàng)建大型的站點(diǎn)時(shí),常需要?jiǎng)?chuàng)建多層的母版頁??梢詫?duì)母版頁進(jìn)行不限級(jí)的嵌套。 <%@ Master Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="SectionProducts.master.cs" Inherits="SectionProducts" %>
MasterPageFile 指定了母版頁。2、在母版頁中使用圖片和超鏈接。 在母版頁中使用url需要十分小心。根據(jù)使用的是html控件和asp.net控件,相對(duì)URL會(huì)有不同的解析方式。 如果使用ASP.NET控件,相對(duì)URL會(huì)解析為相對(duì)于母版頁的URL。 如果使用HTML標(biāo)簽,情況就會(huì)完全不同。如果在<img>或<a>之類的HTML標(biāo)簽中使用相對(duì)URL,這個(gè)相對(duì)URL會(huì)解析為相對(duì)內(nèi)容頁的URL。 為解決html標(biāo)簽中的問題,可以使用asp.net控件或者使用絕對(duì)路徑(不推薦) 3、在web配置文件中注冊(cè)母版頁 在web配置文件中寫的配置母版頁信息應(yīng)用到與web配置文件位于同一文件夾(或其子文件夾)中的所有頁面 - <configuration>
- <system.web>
- <pages masterPageFile="~/SimpleMaster.master"></pages>
- </system.web>
- </configuration>
4、如果想在內(nèi)容頁修改母版頁內(nèi)容,可以使用title,page header屬性,暴露母版頁屬性,對(duì)母版頁使用FindControl方法 來修改。具體google。5、動(dòng)態(tài)加載母版頁,來修改整個(gè)網(wǎng)站的風(fēng)格。 動(dòng)態(tài)修改一個(gè)頁面 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>
因?yàn)槟赴骓摰拿Q賦值給了profile屬性,所以用戶很久以后再回到此網(wǎng)站,仍然會(huì)加載此用戶以前使用過的母版頁。Profile對(duì)象可以在用戶多次訪問同一個(gè)站點(diǎn)時(shí)自動(dòng)維護(hù)它的屬性,Profile的定義在下邊的配置文件中
web配置文件 - <system.web>
- <profile>
- <properties>
- <add name="MasterPageFile" defaultValue="Dynamic1.master"/>
- </properties>
- </profile>
- </system.web>
如需要對(duì)站點(diǎn)中的所有內(nèi)容都動(dòng)態(tài)加載母版頁,最簡(jiǎn)單的方式時(shí)建一個(gè)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配置中注冊(cè)它。- <configuration>
- <system.web>
- <pages pageBaseType="DynamicMasterPage" />
- <profile>
- <properties>
- <add name="MasterPageFile" defaultValue="Dynamic1.master"/>
- </properties>
- </profile>
- </system.web>
- </configuration>
|