您的位置:首页 > 编程语言 > ASP

ASP.NET 母版页与内容页 修改、加载、调用控件等问题汇总

2012-07-13 14:06 323 查看
一、使用多种方式为内容页加载母版页

默认情况下是给单个内容页指定一个母版页加载,当多个内容页需加载到同一个母版页时,我们可以通过配置文件为多个内容页批量加载母版页,另外,还可以在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"
/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐