在 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/

10-11 06:26