2011-07-13 3 views
3

Представьте у вас есть два MasterPages:asp.net: наследование основных страниц не наследует заполнители?

MasterPage "A": PlaceHolder-A1 PlaceHolder-A2

MaterPage "B": (наследуется от) заселяет "PlaceHolder-A1"

Мне нужно создать обычную HTML-страницу aspx, которая наследуется от «B» &, заполняет «PlaceHolder-A2» (от MasterPage «A»)?

Как я могу это сделать?

Единственный способ, который я нашел, - перевести «PlaceHolder-A2» на MasterPage «B» с помощью заполнителя «PlaceHolder-B1», который пуст, и внутри «PlaceHolder-A2». Затем страница должна заполнить «PlaceHolder-B1».

Есть ли более простой способ сделать это?

Спасибо заранее!

+0

Что именно вы пытаетесь достичь здесь? Вы делаете единую ссылку на PlaceHolder-B1, не описывая ее ранее. У меня такое чувство, что конечный результат, который вы ищете, можно сделать гораздо легче, чем ваш подход. – MoarCodePlz

ответ

3

Поскольку ваш вопрос, является ли «простым» способом сделать это, я бы сказал, что ответ нет , На самом деле все, что вам нужно сделать, это убедиться, что контентщики распространяются через каждую главную страницу. Вы можете использовать одно и то же имя. Я использую вложенное MasterPages все время, и, к примеру, я всегда размножить заполнитель для <head> области страницы:

<asp:Content ID="Content1" ContentPlaceHolderID="Head" runat="Server"> 
    <asp:ContentPlaceHolder ID="Head" runat="server"> 
    </asp:ContentPlaceHolder> 
</asp:Content> 

Я не понимаю, что так сложно об этом? У вас нет доступа к изменению одной из главных страниц по какой-то причине? Если это так, вы будете вынуждены обращаться к ContentPlaceHolder, программно подобным тому, что изображает Драгоценный Рой (хотя я не уверен, что его пример на 100% прав для описанного вами сценария).

0

Это звучит немного сложно .. поскольку у вас, как у вас есть общие части между страницами, которые вы можете рассмотреть, используя для этого «Элементы управления». Вы можете поместить пользователя в любое место на нужную страницу.

2

Легче относительный термин здесь. Нет более простого способа справиться с этим в отношении связывания мастер-страниц и их заполнителей, но его можно установить из кода позади. См. this вопрос для справки. Roadie57 объясняет это лучше, чем я могу. Не уверен, что если вы используете VB, но если вы не можете сделать это следующим образом:

ContentPlaceHolder mpContentPlaceHolder = new ContentPlaceHolder(); 
TextBox mpTextBox = new TextBox(); 
mpContentPlaceHolder = (ContentPlaceHolder)Master.FindControl("PlaceHolderA2"); 
if (mpContentPlaceHolder != null) 
{ 
    ...place content in mpContentPlaceHolder 
} 
Смежные вопросы