母版页 - > SubMasterPage - > Web窗体...在子页面中获取母版页的属性

时间:2009-06-04 19:58:57

标签: asp.net master-pages

昨天我就此问了一个相关的问题,被告知不该做什么,但不知道我该做什么。

我有一个母版页,我称之为“TheMaster”。我有2个子母版页“Sub1”和“Sub2”。它们都具有“TheMaster”的Masterpage指令。 Web窗体的Masterpage指令为“Sub1”或“Sub2”。这些不是真名。

在“TheMaster”中,我找出用户所在的页面,找出它们在Web.sitemap中的位置,并使用它,我有Web.sitemap节点以及父节点和父节点的父节点,如果它们一切都存在。我用它来动态构建导航并突出显示当前页面。

现在,我们的设计师有几个地方出现此导航。左侧的顶级导航,子导航,terortiary导航,以及显示家庭的“面包屑”样式 - > parentparentnode - > parentnode - >当前第

由于布局限制,我无法在“TheMaster”中定义所有这些内容。

因此,在“TheMaster”中,我找到了他们当前的节点,并将其保存为“TheMaster”的公共属性(以及其他几个信息。

在Sub1中,即使它使用“TheMaster”作为其主页,它似乎也无法从“TheMaster”中找到我的公共属性。

关于如何通过这套纸牌获取此信息的任何想法?

我试过

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

我想不出任何其他东西可以让它发挥作用。 “TheMaster”基本上不知道“Sub1”,所以我不能在Sub1上设置一个属性,让它沿着树下行,树下的节点显然没有看到他们的父母...... ??? p>

2 个答案:

答案 0 :(得分:3)

将Parent或Page.Master转换为您的实际MasterPage类。

((MyMaster)Page.Master).myProp // found!

答案 1 :(得分:0)

铸造可以让你到达那里,但从长远来看,它不是那么干净,也不可维护。我使用一系列抽象的接口完成了非常非常复杂的版本。有关具有一个图层的简化版本,请参阅this blog post。添加更多层的技巧只是添加一些更多的接口和抽象类。