从孩子填写父母版主页

时间:2009-05-28 17:02:32

标签: asp.net master-pages

我想要一个使用子母版页面的页面,填写父母的内容占位符,但我无法让它工作。每当我尝试在主页'/templates/info.master'中收到错误“无法找到ContentPlaceHolder'customHead'时,请在内容页面中验证内容控件的ContentPlaceHolderID属性。”

我有一个主页(/templates/main.master)定义如下:

<%@ Master Language="C#" %>
<head runat="server">
    <title>foo</title>
    <asp:contentplaceholder runat="server" id="customHead" />
</head>
<body>
    <div id="content">
        <asp:contentplaceholder runat="server" id="masterContent" />
    </div>

然后我有一个像这样定义的孩子主人(/templates/info.master):

<%@ Master Language="C#" MasterPageFile="/templates/main.master" %>
<asp:content id="homeContent" contentPlaceHolderId="masterContent" Runat="server">
<div id="info-container">
    <div id="info-content">
        <asp:contentplaceholder runat="server" id="infoContent"/>
    </div>
</div>
</asp:content>

最后我的页面定义如下:

<%@ Page Language="C#" MasterPageFile="/templates/info.master" %>
<asp:Content ID="head" ContentPlaceHolderID="customHead" runat="server">
    <!-- Custom header area -->
    <link rel="stylesheet" type="text/css" href="foo.css"/>
</asp:Content>
<asp:Content ID="content" ContentPlaceHolderID="childContent" runat="server">
    This is my child content
</asp:Content>

2 个答案:

答案 0 :(得分:4)

您没有在子母版页中定义“customeHead”。如果要公开根母版页面内容区域,则需要在子母版页中公开它。

<%@ Master Language="C#" MasterPageFile="/templates/main.master" %>
<asp:contentplaceholder runat="server" id="customHead" />
<asp:content id="homeContent" contentPlaceHolderId="masterContent" Runat="server">
    <div id="info-container">
        <div id="info-content">
            <asp:contentplaceholder runat="server" id="infoContent"/>       
        </div>
    </div>
</asp:content>

答案 1 :(得分:1)

您是使用this.Page.Master设置的吗?