![]() |
1
6
我以前做过一次,我完全按照你的描述做了(让所有页面都继承自具有OnPreInit事件的自定义页面)。此外,我在Global.asax.cs中有一个自定义的Application_PreRequestHandlerExecute用于设置页面。StyleSheetTheme用于进行不需要其他母版页的图像/css更改。 |
![]() |
2
2
与其有两个不同的母版页,不如有一个母版页动态加载不同的用户控件和内容HTML文字? |
![]() |
3
2
我能感觉到你的痛苦。我搜索了大约一个小时(如果不是更长的话)来寻找这个问题,但没有成功。当你有数百个页面时,说“只需在每个页面上从PreInit调用它”并不是一个简单的答案。但后来我意识到,我花在寻找解决方案上的时间比在每一页上都要多。 但是,我想根据Profile属性设置MasterPageFile,这样每页大约需要5行代码,这是一个可维护性的噩梦。不管怎样,“不要重复自己”,对吧? 因此,我在App_Code文件夹中的一个模块中创建了一个Extension方法,使其更容易维护。
然后在每个页面的PreInit上,我只是这样称呼它:
|
![]() |
4
1
处理PreInit并插入加载正确母版页所需的一行代码非常容易。
在没有令人信服的理由不走这条路的情况下,无论你在哪里处理PreInit,我都会这样做。 |
![]() |
5
0
我很好奇是什么决定了页面的外观?是用户点击按钮更改主题吗?它是否基于用于访问网站的URL? 母版页支持代码隐藏,因此您可以在一个母版页中放置一些逻辑来决定应该显示什么。 我见过几个网站根据用户点击设置Cookie(更改字体大小或页面宽度),然后根据这些Cookie的值应用不同的CSS文件。如果没有cookie,则显示默认外观。 编辑: 这里的另一个想法是,如果你只是想切换CSS,可以将你的样式标签设置为在服务器上运行,并在运行时为其分配属性。这再次需要使用单个母版页,并将代码放在母版页后面,可能放在PreInit事件处理程序中。 由于我从未实施过这个解决方案,我不确定整个<头部>标签是否必须在服务器上运行。
|
![]() |
6
0
从基类继承所有页面,如
|