【问题标题】:Masterpage -> SubMasterPage -> Web Form...getting properties of Masterpage in sub pagesMasterpage -> SubMasterPage -> Webform...获取子页面中 Master Page 的属性
【发布时间】:2009-06-05 04:09:03
【问题描述】:

我昨天问了一个相关的问题,被告知什么不该做,而不是我应该做什么。

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

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

现在,我们的设计师在几个地方出现了这个导航。顶部导航、子导航、左侧的第三导航,以及显示主页 -> 父父节点 -> 父节点 -> 当前页面的“面包屑”样式

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

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

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

关于如何让这些信息在这个纸牌屋中一直可用有什么想法吗?

我试过了

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

我想不出任何其他方法来让它发挥作用。 “TheMaster”基本上对“Sub1”一无所知,所以我不能在Sub1上设置一个属性并让它顺着树走,而且树下的节点显然不知道他们的父母......???

【问题讨论】:

    标签: asp.net master-pages


    【解决方案1】:

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

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

    【讨论】:

    • 铸造是可以的,但副主控确实应该将主控的任何属性公开为副主控的属性。
    【解决方案2】:

    Casting 可以帮助您实现目标,但从长远来看,它既不干净也不可维护。我使用一系列接口来抽象事物,我已经完成了非常非常复杂的版本。请参阅this blog post 以获取具有一层的简化版本。添加更多层的技巧只是根据需要添加更多接口和抽象类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多