覆盖强类型的@page masterpagefile

时间:2010-08-17 20:44:24

标签: c# asp.net master-pages override onpreinit

我正在使用第三方使用母版页和嵌套母版页的asp.net应用程序。我的需求是动态设置每个页面的主页面文件(.aspx)。默认情况下,应用程序在每个页面的强类型@Page指令中设置母版页文件。我不想在每个页面上更改强类型指令(超过50页),因为我很懒,我想尽量减少与未来升级的冲突。

我的解决方案是使用基本母版页类并覆盖OnPreInt事件,如下所示:

protected override void OnPreInit(EventArgs e)
    {
    this.MasterPageFile = "~/MasterPages/MyMaster.master";
    }

一切都很完美。我的问题是:这是一个坏主意,为什么?这似乎太容易了。

感谢。

3 个答案:

答案 0 :(得分:0)

它使代码/逻辑更复杂。例如,在您之后可能继续从事该项目的其他人可能会很快理解它。 IMHO

答案 1 :(得分:0)

这应该没有问题。在OnPreInit之后,MasterPage才会应用于控件集合。我看到的唯一可能的问题是

1)你的开发人员必须记住这种转换(技术债务)

2)每次请求页面时,您都必须加载两个MasterPage类(性能问题)

答案 2 :(得分:0)

这是一个非常好的主意。母版页的一半是你可以做到这一点。

关于他们的一个令人讨厌的事情是,你不能让他们开始引用一个不存在的文件(当你总是以编程方式决定主人时会更清楚),所以如果我要去总是将它设置为新的东西我喜欢从一个只是说“虚拟母版页,这将从编程方式移动”的页面开始,所以很明显,任何追踪页面使用的母版页的人都会发生这种情况。