Я надеюсь, что мое загадочное название не будет слишком загадочным, но я попытаюсь объяснить, чем я на самом деле хочу заниматься.
У меня есть главная страница «A», у которой есть дочерние страницы «B» и «C». Это прекрасно реализовано с помощью стандартной модели главной страницы в ASP.NET.
На моем сайте две темы: «Т1» и «Т2». На самом деле они представляют разных партнеров, T1 - наша собственная компания, а T2 - партнер.
Я хочу отображать определенные вещи на страницах «B» и «C» в зависимости от того, какую тему я использую. Например, я могу захотеть вставить дополнительные кнопки или графику на страницу «B», относящуюся к партнеру по теме «T2». Этот контент будет находиться в произвольном месте на странице в зависимости от самой страницы. Некоторые партнеры могут даже не использовать эту функцию.
Проблема в том, что я хочу сделать это как можно более декларативно и свести к минимуму знания, которые страницы имеют о теме.
Здесь на помощь приходит концепция «обратной» главной страницы. Я хочу определить область на дочерней странице, в которую может быть вставлено конкретное содержание «темы». (Я говорю «тема», потому что это то, что использует ASP.NET - и, скорее всего, то, к чему я бы привязал контент).
Итак, вам может быть интересно:
- Почему вы не можете просто использовать для этого главную страницу и добавить дополнительные разделы контента? Причина в том, что контент может отображаться где угодно на странице в определенном для этой страницы месте.
- Почему вы не можете использовать «вложенную» главную страницу? По сути по той же причине.
Возможное решение:
Мне интересно создать какой-то пользовательский элемент управления, который будет иметь текстовый ключ, представляющий, какой тип контента будет там вставлен. Пользовательский элемент управления должен знать, что отображать для каждой «темы» - возможно, путем динамического создания соответствующего дополнительного пользовательского элемента управления.
Это кажется немного неуклюжим - так что мне интересно, какие решения другие могли придумать для подобных ситуаций.