wavaya 发表于 2013-1-26 14:12:23

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]
查看完整版本: 5.2修改母版页内容