Asp.net 母版页是否可以引用具有相同内容和内容占位符标记的另一母版页? 当前设置

Asp.net 母版页是否可以引用具有相同内容和内容占位符标记的另一母版页? 当前设置,asp.net,master-pages,asp.net-2.0,Asp.net,Master Pages,Asp.net 2.0,我目前在以下层次结构中有三个母版页和内容页: 一个显示最终结果的根级母版页。称之为“A” 两个兄弟页面不相互引用,但包含所有相同的contentplaceholder元素,只是顺序不同,周围有不同的。两者都引用根级母版页。将其称为“B1”和“B2” 引用上述一个或另一个同级母版页(并非两者)的多个内容页。把这些叫做“C1”到“C-随便什么” 基本上,我有: Cn=>B1=>A Cm=>B2=>A 这种层次结构运作良好 所需设置 我想做的是在内容页和兄弟母版页之间的层次结构(新母版页)中添加一

我目前在以下层次结构中有三个母版页和内容页:

  • 一个显示最终结果的根级母版页。称之为“A”
  • 两个兄弟页面不相互引用,但包含所有相同的contentplaceholder元素,只是顺序不同,周围有不同的
    。两者都引用根级母版页。将其称为“B1”和“B2”
  • 引用上述一个或另一个同级母版页(并非两者)的多个内容页。把这些叫做“C1”到“C-随便什么”
基本上,我有:

Cn=>B1=>A

Cm=>B2=>A

这种层次结构运作良好

所需设置 我想做的是在内容页和兄弟母版页之间的层次结构(新母版页)中添加一个新级别。基本上是这样的:

  • 一个显示最终结果的根级母版页
  • 两个同级页面加上第三个同级页面。叫它B3
  • 一个新的中间母版页,它动态地“选择”一个同级母版页。期望的行为是将C给出的内容直接传递给Bn,而不进行修改。D主动做的唯一事情就是选择哪个Bn。将此新母版页称为D
  • 多个内容页引用新的中间母版页而不是旧的同级页
这方面的挑战是,我在一个相当复杂的产品范围内工作,我不能以任何有意义的方式更改原始的两个兄弟母版页(B1和B2)或内容页(C)

我想:

Cn=>D=>B1=>A

Cm=>D=>B2=>A

Ck=>D=>B3=>A

本质上,D应该将所有内容“传递”到它选择的B级母版页。我不能把这种逻辑放在C级页面中

其他细节
  • 所有B级页面都有相同的内容/内容占位符标记,只是顺序和样式不同而已
  • 只要不需要修改C或B,D可以像它必须的那样复杂
  • 我正在使用ASP.NET2.0

这可能吗?

母版页没有Page_PreInit事件,因此母版页层次结构的所有更改(嵌套或其他)都必须源自内容页

因此,如果可以修改内容页,请添加:

void Page_PreInit(object sender, EventArgs e)
{
    //if (someCondition)
        this.Master.MasterPageFile = "~/Path/B1.master";
    //else if (otherCondition)
        this.Master.MasterPageFile = "~/Path/B2.master";
    //etc.
}

不确定我是否有那么多的控制权。。。我来试一试。如果您对页面本身没有太多的控制权,您还可以创建一个与内容页继承的任何类具有相同名称/命名空间的分部类,并将上面的代码添加到分部类中。(这假设内容页继承的类尚未定义Page_Init,并且未密封。)我没有足够的控制权来完全执行您提到的操作,但我在产品范围内发现了另一种机制,允许我以不同的方式执行我想要的操作。不管怎样,你的建议在总体理解方面是有帮助的。谢谢