Masterpage -> SubMasterPage -> веб-форма ... получение свойств главной страницы на подстраницах - PullRequest
1 голос
/ 04 июня 2009

Я задал соответствующий вопрос по этому поводу вчера, и мне сказали, что не следует делать, но не то, что я должен делать.

У меня есть главная страница, которую я назову "TheMaster". У меня есть 2 мастер-страницы «Sub1» и «Sub2». У них обоих есть директива Masterpage «TheMaster». Веб-формы имеют директиву Masterpage «Sub1» или «Sub2». Это не настоящие имена.

В «TheMaster» я выясняю, на какой странице находится пользователь, выясняю, где в Web.sitemap он находится, и, используя это, у меня есть узел Web.sitemap, а также родитель и родительский родитель, если они все существует. Я использую это для динамического построения навигации и выделения текущей страницы.

Теперь у наших дизайнеров есть несколько мест, где появляется эта навигация. Навигация сверху, вспомогательная навигация, третичная навигация слева и стиль "хлебная крошка", показывающий home -> parentparentnode -> parentnode -> currentpage

Я не могу определить все это в "TheMaster" из-за ограничений макета.

Итак, в «TheMaster» я нахожу их текущий узел и сохраняю его как открытое свойство «TheMaster» (вместе с несколькими другими частями информации.

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

Любые идеи о том, как я могу получить эту информацию, чтобы быть доступным на протяжении всего этого карточного дома?

Я пробовал

Page.Master.myProp (nope)
Parent.myProp (nope)

Я не могу думать ни о чем другом, чтобы заставить это работать. «TheMaster» практически не знает «Sub1», поэтому я не могу установить свойство для Sub1 и заставить его идти вниз по дереву, а узлы вниз по дереву, очевидно, не замечают своих родителей ... ???

Ответы [ 2 ]

3 голосов
/ 05 июня 2009

Приведение Родителя или Page.Master к вашему фактическому классу MasterPage.

((MyMaster)Page.Master).myProp // found!
0 голосов
/ 05 июня 2009

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

...