利用母版页创建网站需要知道的几点

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>




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值