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 直到
1) 你的开发者必须记住这个转换发生了(技术债)
2) 每次请求页面时,您都必须加载两个 MasterPage 类(性能问题)
它使代码/逻辑更加复杂。例如,可能在您之后继续从事该项目的其他人可能无法快速理解它。恕我直言