1、在创建大型的站点时,常需要创建多层的母版页。可以对母版页进行不限级的嵌套。 <%@ Master Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="SectionProducts.master.cs" Inherits="SectionProducts" %>
MasterPageFile 指定了母版页。2、在母版页中使用图片和超链接。 在母版页中使用url需要十分小心。根据使用的是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、动态加载母版页,来修改整个网站的风格。 动态修改一个页面 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属性,所以用户很久以后再回到此网站,仍然会加载此用户以前使用过的母版页。Profile对象可以在用户多次访问同一个站点时自动维护它的属性,Profile的定义在下边的配置文件中
web配置文件 - <system.web>
- <profile>
- <properties>
- <add name="MasterPageFile" defaultValue="Dynamic1.master"/>
- </properties>
- </profile>
- </system.web>
如需要对站点中的所有内容都动态加载母版页,最简单的方式时建一个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);
- }
-
- }
创建新的Page基类以后,还需要在web配置中注册它。- <configuration>
- <system.web>
- <pages pageBaseType="DynamicMasterPage" />
- <profile>
- <properties>
- <add name="MasterPageFile" defaultValue="Dynamic1.master"/>
- </properties>
- </profile>
- </system.web>
- </configuration>
|