Может ли главная страница ссылаться на другую главную страницу с таким же содержимым и тегами-заполнителями содержимого? - PullRequest
0 голосов
/ 08 января 2011

Текущая настройка

В настоящее время у меня есть три главные страницы и страницы содержимого в следующей иерархии:

  • Одна главная страница корневого уровня, отображающая конечный результат. Назовите это "A"
  • Две родственные страницы, которые не ссылаются друг на друга, но содержат все одни и те же элементы-заполнители контента, только в другом порядке с окружающими их <div>. Оба ссылаются на главную страницу корневого уровня. Назовите их "B1" и "B2".
  • Несколько страниц контента, которые ссылаются на одну или другую главную страницу родного брата выше (не обе). Назовите их "C1" через "C-что угодно".

В основном у меня есть:

Cn => B1 => A

см => B2 => A

Эта иерархия работает нормально.

Требуемая настройка

То, что я хочу сделать, это добавить новый уровень в эту иерархию (новую главную страницу) между страницами контента и мастер-страницами родственного брата. По сути, это так:

  • Одна главная страница корневого уровня, отображающая конечный результат.
  • Две братские страницы плюс третий брат . Назовите это B3
  • Новая средняя мастер-страница , которая динамически «выбирает» одну из мастер-страниц родного брата. Желаемое поведение состоит в том, чтобы передать содержимое, переданное C, непосредственно в Bn без его изменения. Единственное, что активно делает D, это выбирает, какой Bn. Назовите эту новую мастер-страницу D.
  • Несколько страниц контента, которые ссылаются на новую среднюю главную страницу вместо старых братьев и сестер.

Сложность заключается в том, что я работаю в рамках довольно сложного продукта и Я не могу изменить две исходные братские страницы (B1 и B2) или страницы содержимого (С) любым значимым способом.

Я хочу:

Cn => D => B1 => A

См => D => B2 => A

Ck => D => B3 => A

По сути, D должен «пройти» через весь контент на любую выбранную им главную страницу уровня B. Я не могу поместить эту логику в страницы уровня C.

Дополнительные детали

  • Все страницы уровня B имеют одинаковые теги содержимого / заполнителя содержимого, просто упорядочены и оформлены по-разному.
  • D может быть настолько сложным, насколько это необходимо, если только это не требует изменения C или B.
  • Я использую ASP.Net 2.0

Возможно ли это?

1 Ответ

0 голосов
/ 08 января 2011

MasterPage не имеет события Page_PreInit, поэтому все изменения в иерархии MasterPage (вложенные или нет) должны происходить со страницы содержимого.

Итак, если вы можете изменить страницы содержимого, добавьте:

void Page_PreInit(object sender, EventArgs e)
{
    //if (someCondition)
        this.Master.MasterPageFile = "~/Path/B1.master";
    //else if (otherCondition)
        this.Master.MasterPageFile = "~/Path/B2.master";
    //etc.
}
...