在 ASP.NET 中,到目前为止我们只有一个主题,它是在 web.config 中指定的。最近开始在底页切换Theme PreInit
基于 Request.Url.Host
值,假设 domain1.com 是原始的,我们现在添加具有自己样式的 domain2.com。自从这样做以来所有<link rel="stylesheet...>
标签被注入(inject)页面两次。 domain1 总是在 <head>
的最开始注入(inject)的节,然后是 <title>
标记,然后是所有样式表链接标记,再次为其在页面 PreInit 中明确设置的主题。
据我了解,ASP.NET 会自动将每个 css 文件包含在主题文件夹中,它会在页面生命周期的哪个事件中执行此操作?
最佳答案
好的,所以我发现了问题,我们附加到 PreInit 事件处理程序而不是覆盖页面上的 OnPreInit
方法,这导致了这种奇怪的副作用。 .NET 似乎在 preinit 中做了一些时髦的魔法来设置来自 web.config 的主题默认值,如果你在事件处理程序中而不是在方法中设置 Theme
属性,它不会被完全覆盖.这很可能是因为事件没有保证的执行顺序,所以它发生得太早或太晚。
关于asp.net - 在代码中设置 Page.Theme 会使 css 文件链接到两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6147922/