2010-08-19 5 views
5

У меня есть ряд вложенных мастеров-страницы, как так:ASP.NET MVC вложенной мастер-страница, наследующее содержание

Site.Master:

<asp:ContentPlaceHolder ID="SearchFormContent" runat="server"> 
<%Html.RenderPartial("SearchFormControl"); %> 
</asp:ContentPlaceHolder> 

вложенной (ребенок) главная страница, область .master

<asp:Content ContentPlaceHolderID="SearchFormContent" ID="SearchFormContentContainer" runat="server"> 
<asp:ContentPlaceHolderID="SearchFormContent" runat="server"/> 
</asp:ContentPlaceHolder> 

У меня есть две отдельные страницы содержания. Один хочет добавить свой собственный контент в SearchFormContent, другой хотел бы сохранить контент, который был определен на главной странице верхнего уровня. Разумеется, поскольку основная страница ребенка определяет контент для блока SearchFormContent, так что дочерние страницы могут получить к нему доступ, содержимое, определенное на главной странице верхнего уровня, будет стерто.

Любой способ сделать это?

+0

Я изо всех сил пытаюсь найти решение этой проблемы. в год или около того, так как вы спросили, вы когда-нибудь находили удобный способ сделать это? – Funka

+0

Не совсем. Решение вложенного заполнителя работает хорошо, хотя оно явно некрасиво. Я перешел в движок просмотра Razor, у которого есть гораздо более приятная система для необязательного отображения разделов страниц, замены содержимого только тогда, когда вы хотите и т. Д. –

ответ

1

Я не могу думать иначе, чем иметь следующее в вашей главной странице ребенка

<asp:Content ContentPlaceHolderID="SearchFormContent" ID="SearchFormContentContainer" runat="server"> 
    <asp:ContentPlaceHolder ID="SearchFormContent" runat="server"> 
     <%Html.RenderPartial("SearchFormControl"); %> 
    </asp:ContentPlaceHolder> 
</asp:ContentPlaceHolder> 

Настя I но это единственный способ, который я могу придумать при использовании мастер-страниц.

HTHS,
Чарльз

+0

Мне бы не хотелось дублировать это место. Мы говорим о нескольких страницах. –

+0

Достаточно нескольких основных страниц, которые вы имеете в виду? Потому что вам нужно сделать это только на (дочерних) главных страницах. – Charlino

+0

Два года и полный переиздание и переход к Sitefinity позже, таким образом, на самом деле имеет смысл. –

1

Удалите все свои ContentPlaceHolder и оставьте SearchFormControl прямо на сайте.master. Если вы не хотите, чтобы переопределить SearchFormControl, то вам не нужно определить ControlPlaceHolder s

+0

Проблема в том, что я хочу переопределить содержимое SearchFormControl. Это делается по-разному в нескольких разных областях сайта, но некоторые области должны использовать контент по умолчанию с главной страницы сайта верхнего уровня. –

+1

@ David Lively - на основе ваших двух комментариев звучит так, будто вы хотите ваш торт и съесть его тоже. – jfar

1

вы можете поместить содержимое в ContentPlaceholder на MasterPage. который будет отображаться по умолчанию, если вы не переопределите содержимое с дочерней страницей.

+0

Когда я добавляю новую «веб-форму с использованием главной страницы», дизайнер переопределяет все владельцы мест, найденные на главной странице. Есть ли способ сказать, чтобы не переопределить один из них? – Adi

Смежные вопросы