在代码中设置 Page.Theme 会使 css 文件链接到两次

Gle*_*ven 5 css asp.net themes

在 ASP.NET 中,到目前为止我们只有一个主题,它是在 web.config 中指定的。PreInit我最近开始根据值切换基页中的主题Request.Url.Host,假设domain1.com是原始的,我们现在添加具有自己风格的domain2.com 。执行此操作后,所有<link rel="stylesheet...>标签都会两次注入页面中。域1总是在该部分的最开始注入<head>,然后<title>是标记,后面是所有样式表链接标记,对于在页面 PreInit 中显式设置的主题。

据我了解,ASP.NET 将自动包含主题文件夹中的每个 css 文件,它在页面生命周期中的哪个事件中执行此操作?

Gle*_*ven 0

好的,所以我发现了问题,我们附加到 PreInit 事件处理程序而不是覆盖OnPreInit页面上的方法,这导致了这个奇怪的副作用。Theme似乎 .NET 在 preinit 中做了一些奇怪的魔法,从 web.config 设置主题默认值,如果您在事件处理程序而不是方法中设置属性,则不会完全覆盖该主题。这很可能是由于事件没有保证的执行顺序,因此它发生得太早或太晚。