关于 c#:Override strong typed @page masterpagefile

Override strongly typed @page masterpagefile

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

我的解决方案是使用基本母版页类并像这样覆盖 OnPreInt 事件:

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

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

谢谢。


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

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


这应该可以正常工作。 MasterPage 直到 OnPreInit 之后才应用于控件集合。我看到的唯一可能的问题是

1) 你的开发者必须记住这个转换发生了(技术债)

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


它使代码/逻辑更加复杂。例如,可能在您之后继续从事该项目的其他人可能无法快速理解它。恕我直言