在 ASP.NET 中,我们到目前为止只有一个主题,它在 web.config 中指定。我最近开始根据 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/