ASP.NET:母版页与内容页

 一、使用多种方式为内容页加载母版页

默认情况下是给单个内容页指定一个母版页加载,当多个内容页需加载到同一个母版页时,我们可以通过配置文件为多个内容页批量加载母版页,另外,还可以在PreInit事件中动态加载母版页。

1、为单个内容页加载母版页时,自动在内容页的Page指令里加上MasterPageFile属性
<% @ Page Title ="" Language ="C#" MasterPageFile ="~/MasterPage/Site.Master" …… %>

2、为多个内容页批量加载母版页时,在配置文件里添加MasterPageFile属性
< configuration >
  <
system.web >
    <
pages masterPageFile = "~/MasterPage/Site.Master "/>
  </
system.web >
</
configuration >
此时,配置文件目录下的所有内容页都会批量加载该母版页,普通页面会被母版页忽略,但要记得去掉内容页里Page指令的MasterPageFile属性,否则会重写配置文件里的MasterPage属性。

3、PreInit事件中动态加载母版页
母版页的加载在PreInit事件中,可以使用如下代码动态加载,
 protected void Page_PreInit(object sender,EventArgs e)
{
    MasterPageFile = "~/MasterPage/Site.Master" ;
}

 

二、如何在内容页中修改关联母版页的内容

很多时候多个内容页加载同一个母版页,为了使各个内容页中加载的同一个母版页内容有所不同,我们需要修改合并在内容页中的母版页内容。

1、修改Title标签属性
当母版页的head标签包含Runat=”Server”属性时,可以修改内容页的title标签属性,使其不显示母版页的默认title,
方法一是通过内容页前台设置的Page指令的Title属性,
<% @ Page  Title ="前台设置内容页标题" Language ="C#" AutoEventWireup ="true" …… %>
方法二是通过内容页后台设置Page.Header.Title 的值,
Page.Header.Title = "编程改变内容页标题" ;

2、修改Head标签属性
当母版页的head标签包含Runat=”Server”属性时,我们可以通过后台代码修改head标签包含的标签属性,并可以为 head标签动态添加指定的标签,如“meta”标签;代码中Page.header返回的是HtmlHead对象,代表head标签,HtmlMeta 对象代表Meta标签。
using System.Web.UI.HtmlControls;
……
……
protected void Page_Load(object sender,EventArgs e)
{
    //修改head标签中的title标签属性
   
Page.Header.Title = "编程改变内容页标题" ;
    //修改head标签包含的其它标签属性,间接修改了页面背景颜色
   
Style myStyle = new Style ();
    myStyle.BackColor = System.Drawing.Color .Red;
    Page.Header.StyleSheet.CreateStyleRule(myStyle, null ,"html" );
    //添加新标签meta到head标签中
   
HtmlMeta metaKeywords = new HtmlMeta ();
    metaKeywords.Name = "KEYWORDS" ;
    metaKeywords.Content = "asp.net,c#" ;
    HtmlHead head = Page.Header;
    head.Controls.Add(metaKeywords);
}

3、修改其它服务器控件属性
A、直接修改法:
通过ID查找母版页控件,((Label )Master.FindControl("Label1" )).Text ="内容页" ;
B、间接修改法:
先在母版页中将需要修改的控件属性包装成公开属性,
public string BodyTitle
{
    get {return this .Label1.Text;}
    set { this .Label1.Text =value ;}
}
然后在内容页中转换母版页为特定的母版页类型,
<% @ MasterType VirtualPath ="~/masterpage/MasterPage.master" %>
最后在内容页中调用母版页公开的属性,设置其值,Master.BodyTitle = "内容页" ;

 

三、谨慎使用母版页中控件的相关URL属性

母版页中可以包含客户端控件和服务器端控件,各个内容页与之合并时,其相关的URL属性需解析为当前内容页对应可用的URL。

1、当使用客户端控件相关URL属性时,需要使用Page.ResolveUrl(“相对于整个虚拟目录的相对路径”) 方法解析为当前内容页对应可用的URL,
< img src ="logo.gif" alt =""/>需要修改为 < img src =" <% =Page.ResolveUrl("~/MasterPage/logo.gif")%> " alt =""/>,否则不能够正确显示;

2、当使用服务器端控件相关URL属性时,自动解析为当前内容页对应可用的URL,
< asp : Image ID ="Image1" runat ="server" ImageUrl ="~/MasterPage/logo.gif" />

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值