5.2修改母版页内容
修改母版页内容1、使用Title属性
<%@Page Language="c#" MasterPageFile="~/SimpleMaster.master" Title="Content Page File" %>
....
2、使用Page Header属性
如果需要通过编程方式修改母版页的页标题或CSS规则,可以使用Page.Header属性,返回一个实现IPageHeader接口的对象。
具有以下属性
StyleSheet
Title
<%@ Page Title="" Language="C#" MasterPageFile="~/SectionProducts.master" %><script runat="server"> protected void Page_Load(object sender, EventArgs e) { Page.Header.Title = String.Format("Header Content ({0})", DateTime.Now); Style myStyle = new Style(); myStyle.BackColor = System.Drawing.Color.Red; Page.Header.StyleSheet.CreateStyleRule(myStyle, null, "html"); }</script><asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHoder1" runat="Server"> Products,Products,Products <br /> Products,Products,Products <br /> Products,Products,Products <br /> Products,Products,Products <br /> Products,Products,Products</asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHoder2" runat="Server"> Products,Products,Products 2 <br /> Products,Products,Products <br /> Products,Products,Products <br /> Products,Products,Products <br /> Products,Products,Products</asp:Content><asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHoder3" runat="Server"> Products,Products,Products 3 <br /> Products,Products,Products <br /> Products,Products,Products <br /> Products,Products,Products <br /> Products,Products,Products</asp:Content>
Meta
<%@ Page Title="" Language="C#" MasterPageFile="~/SectionServices.master" %><script runat="server"> protected void Page_Load(object sender, EventArgs e) { //Create Meta Description HtmlMeta metaDesc = new HtmlMeta(); metaDesc.Name = "DESCRIPTION"; metaDesc.Content = "A sample of using HtmlMeta controls"; //Create Meta Keywords HtmlMeta metaKeyword = new HtmlMeta(); metaKeyword.Name = "KEYWORD"; metaKeyword.Content = "HtmlMeta,Page.Hader,ASP.NET"; HtmlHead head = (HtmlHead)Page.Header; head.Controls.Add(metaDesc); head.Controls.Add(metaKeyword); }</script><asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHoder1" runat="Server"> Services,Services,Services 1 <br /> Services,Services,Services <br /> Services,Services,Services <br /> Services,Services,Services <br /> Services,Services,Services</asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHoder2" runat="Server"> Services,Services,Services 2 <br /> Services,Services,Services <br /> Services,Services,Services <br /> Services,Services,Services <br /> Services,Services,Services</asp:Content>
页面多生成如下内容:
</title>
<meta name="DESCRIPTION" content="A sample of using HtmlMeta controls" />
<meta name="KEYWORD" content="HtmlMeta,Page.Hader,ASP.NET" />
</head>
3、暴露母版页属性
可以将母版页中的属性和方法暴露出来,然后在特定的内容页中修改这些属性和方法。
PropertyMaster.master
<%@ Master Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"> public string BodyTitle { get { return ltlBodyTitle.Text; } set { ltlBodyTitle.Text = value; } }</script><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <style type="text/css"> html { background-color: Silver; } .content { margin: auto; width: 700px; background-color: White; padding: 10px; } h1 { border-bottom: solid 1px blue; } </style> <title></title></head><body> <form id="form1" runat="server"> <div> <h1> <asp:Literal ID="ltlBodyTitle" runat="server" /></h1> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> </form></body></html>
propertyContent.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/PropertyMaster.master" %><%@ MasterType VirtualPath="~/PropertyMaster.master" %><script runat="server"> protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Master.BodyTitle = "The Body Title"; } }</script><asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> Content,Content,Content,Content <br /> Content,Content,Content,Content <br /> Content,Content,Content,Content <br /> Content,Content,Content,Content <br /> Content,Content,Content,Content</asp:Content>
注意点:
1)<script runat="server">
public string BodyTitle
{
get { return ltlBodyTitle.Text; }
set { ltlBodyTitle.Text = value; }
}
</script>
2)内容页必须加上
<%@ MasterType VirtualPath="~/PropertyMaster.master" %>
4、对母版页使用FindControl方法
FindMaster.master
<%@ Master Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"></script><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <style type="text/css"> html { background-color:Silver; } .content { margin:auto; width:700px; background-color:White; padding;10px; } h1 { border-bottom:solid 1px blue; }</style> <title>Find Master</title></head><body> <form id="form1" runat="server"> <div class="content"> <h1> <asp:Literal ID="ltlBodyTitle" runat="server" /></h1> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> </form></body></html>
FindContent.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/FindMaster.master" %><script runat="server"> protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Literal ltlBodyTitle = (Literal)Master.FindControl("ltlBodyTitle"); ltlBodyTitle.Text = "The Body Title"; } }</script><asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">Content,Content,Content,Content <br /> Content,Content,Content,Content <br /> Content,Content,Content,Content <br /> Content,Content,Content,Content <br /> Content,Content,Content,Content</asp:Content>
2011-4-28 11:06 danny
页:
[1]