Есть один способ сделать это, но при определенных обстоятельствах возникает небольшая проблема, если вы полагаетесь на любой контент по умолчанию из заполнителя.
В вашем примере у вас есть Parent1.master
:
<div id="content">
<h1>Lorem Ipsum, from Parent1</h1>
<asp:ContentPlaceHolder ID="cphContent" runat="server">
<p>I am default content from Parent1...</p>
</asp:ContentPlaceHolder>
</div>
И у вас также есть вложенный Parent2.master
, который потребляет заполнитель из Parent1:
<asp:Content ContentPlaceHolderID="cphContent" runat="server">
<h2>I am some specific stuff from Parent2...</h2>
<asp:ContentPlaceHolder ID="cphContent" runat="server">
<p>I am default content from within Parent2!</p>
<p>We want to create another, nested CPH so that Parent3 can use it!</p>
<p>(It is seemingly OK that we can use the same ID for this CPH<br />
in Parent2 that we did originally in Parent1.)</p>
</asp:ContentPlaceHolder>
</asp:Content>
И теперь Parent3.master
может использовать заполнитель из Parent2. (А также предоставьте другой заполнитель для конечной страницы содержимого для потребления!) Вот она:
<asp:Content ContentPlaceHolderID="cphContent" runat="server">
<h3>Hello from Parent3!</h3>
<asp:ContentPlaceHolder ID="cphContent" runat="server">
<p>I am more default text in yet another nested placeholder</p>
</asp:ContentPlaceHolder>
</asp:Content>
Ваша отображаемая страница контента будет выглядеть примерно так:
<div id="content">
<h1>Lorem Ipsum, from Parent1</h1>
<h2>I am some specific stuff from Parent2...</h2>
<h3>Hello from Parent3!</h3>
<p>I am the plugged-in content, from the content page!</p>
</div>
Одна замечательная особенность этого подхода, и почему мы можем захотеть использовать одни и те же имена для этих вложенных CPH по всей цепочке наследования, заключается в том, что ваша конечная страница контента может измениться с использования любой из родительских главных страниц 1–3 без необходимости изменить что-то еще, если они ожидали найти что-то под названием cphContent
для потребления.
Хорошо, теперь вы увидели забавную часть, но единственное, что я упомянул, может быть проблема: если вы пытаетесь позволить любому тексту «по умолчанию» просочиться к любому из внуков. Под этим я подразумеваю, что если ваша страница контента не предоставляет никакого Контента для заполнителя "cphContent", то будет использоваться только значение по умолчанию из последней главной страницы. Значение по умолчанию от Parent1.master
по существу потеряно за пределами Parent2. (Хотя вы, безусловно, могли бы использовать значение по умолчанию из Parent3.) Возможно, есть способ сделать это программно, но «из коробки», кажется, позволяет вам делать то, что вы просили, если вы можете жить с этим предупреждением.
Удачи!