Реализация «обратной» или «вложенной» главной страницы с ASP.NET - PullRequest
0 голосов
/ 19 января 2009

Я надеюсь, что мой загадочный заголовок не слишком загадочный, но я попытаюсь объяснить, что именно я на самом деле хочу сделать.

У меня есть главная страница «A», у которой есть дочерние страницы «B» и «C». Это реализовано со стандартной моделью главной страницы в ASP.NET просто отлично.

У моего сайта есть две темы: «T1» и «T2». Они фактически представляют разных партнеров, T1 - наша собственная компания, а T2 - партнер.

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

Проблема в том, что я хочу сделать это настолько декларативно, насколько это возможно, и минимизировать знания, которые есть на страницах о теме.

Вот здесь и возникает концепция «обратной» главной страницы. Я хочу определить область на дочерней странице, в которую можно вставить контент, специфичный для «темы». (я говорю «тема» потому что это то, что использует ASP.NET - и, скорее всего, то, к чему я бы привязал контент).

Так что вы можете быть удивлены:

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

Возможное решение:

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

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

Ответы [ 4 ]

1 голос
/ 19 января 2009

вы можете использовать CSS для позиционирования ваших разделов контента в любом месте на вашей странице. так что я не буду беспокоиться о расположении страниц и т. д.

если бы это был я, я бы просто динамически загружал 2 разных файла css в одну мастер-страницу и, основываясь на той же логике, отображал разное содержимое в заполнителях.

1 голос
/ 19 января 2009

В настоящее время я работаю над сайтом, который имеет аналогичные требования, которые слишком высоки для CSS. В одном макете логин расположен горизонтально вверху порядка рендеринга, а в другом - в правом столбце.

Мы используем стандартные темы ASP.NET для вывода CSS, URL-адресов логотипов через SkinID и т. Д.

Чтобы получить пользовательский макет, я создал элемент управления «Loader», который загружает пользовательские элементы управления через список, указанный в атрибуте Loader. Атрибут может быть определен непосредственно в разметке загрузчика или через файл .skin в теме.

Каждый ключ в списке - это просто базовое имя UserControl (я добавляю путь и расширение). Элементы управления создаются с помощью Page.LoadControl ().

0 голосов
/ 19 января 2009

Вы МОЖЕТЕ использовать вложенные главные страницы в VS2008!

Смотрите здесь -

Блог Скотта Гатри

0 голосов
/ 19 января 2009

У вас есть исправление макета для разных партнеров? Или вы хотите, чтобы партнеры выбирали макеты во время выполнения?

Если макеты фиксированы, то 1 способ - создать CSS в стиле дзен (http://www.csszengarden.com/)) и затем динамически загрузить его в соответствии с клиентом / партнером. Если вы хотите, чтобы партнеры изменили макеты во время выполнения, чем, вероятно, вы Возможно, вы захотите использовать Webparts.

Надеюсь, это поможет.

...