ASP.NET 网页模板-访问母版资源(属性和方法)(一)

作者:vkvi 来源:ITPOW(原创) 日期:2007-11-13

这一节介绍如何在内容页访问母版页的资源,还是举例说明,不同的页面在导航栏上应该有不同的指示,比如当前页面是 A 页面,导航栏的 A 应该突出显示。

母版页代码

<%@ 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 void SetCurNavItem(int itemIndex)
    {
        nav.Items[itemIndex].Attributes.CssStyle.Add("color", "#FF0000");
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
   
        <asp:ContentPlaceHolder id="m_header" runat="server">
          <asp:BulletedList ID="nav" runat="server">
            <asp:ListItem Text="导航一"></asp:ListItem>
            <asp:ListItem Text="导航二"></asp:ListItem>
          </asp:BulletedList>
        </asp:ContentPlaceHolder>
       
        <asp:ContentPlaceHolder ID="m_content" runat="server">在
        </asp:ContentPlaceHolder>
       
        <asp:ContentPlaceHolder ID="m_footer" runat="server">
          <p>版权所有</p>
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>

内容页代码

<%@ Page Language="C#" MasterPageFile="MasterPage1.master" Title="首页" %>
 <script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        ((ASP.masterpage1_master)Master).SetCurNavItem(0);
    }
</script>
<asp:Content ID="content" runat="server" ContentPlaceHolderID="m_content">
 <p>这里是首页的内容</p>
</asp:Content>

效果

访问母版资源

可以看到,导航栏的第一项突出显示了。

更好的方法

ASP.masterpage1_master 是强制类型转换,这样使用起来似乎不是很方便,因为每次使用 Master 的地方都要重复地写这些代码,我们可以利用 MasterType 指令来实现。

<%@ Page Language="C#" MasterPageFile="MasterPage1.master" Title="首页" %>
<%@ MasterType VirtualPath="MasterPage1.master" %>
 <script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        Master.SetCurNavItem(0);
    }
</script>
<asp:Content ID="content" runat="server" ContentPlaceHolderID="m_content">
 <p>这里是首页的内容</p>
</asp:Content>

更强的方法

将在下一节中介绍。

相关文章