六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 47|回复: 0

5.2修改母版页内容

[复制链接]

升级  57%

115

主题

115

主题

115

主题

举人

Rank: 3Rank: 3

积分
371
 楼主| 发表于 2013-1-26 14:12:23 | 显示全部楼层 |阅读模式
修改母版页内容


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
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表