Заполнение родительской главной страницы от ребенка - PullRequest
4 голосов
/ 28 мая 2009

Я хотел бы иметь страницу, которая использует дочернюю главную страницу, заполнить заполнитель содержимого родителя, но я не могу заставить его работать. Всякий раз, когда я пытаюсь получить сообщение об ошибке "Не удается найти ContentPlaceHolder 'customHead' на главной странице '/templates/info.master', проверьте атрибут 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 ]

4 голосов
/ 28 мая 2009

Вы не определили "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 голос
/ 28 мая 2009

Вы устанавливаете его с помощью this.Page.Master?

...