The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

ASP.NET 有時必須同時停用 Theme 與 StyleSheetTheme

ASP.NET 2.0 在 Page 類別新增了個 StyleSheetTheme 屬性,可以指定頁面中要載入所有在該 Theme 目錄中的所有 CSS 檔案 ( App_Themes\ThemeName\*.css ),預設來說你只要有指定 Theme 屬性其 StyleSheetTheme 就會跟 Theme 一樣,也就是說該頁面除了會套用 Theme 所需的 *.skin 檔案之外,還會載入所有放在 Theme 目錄下的所有 *.css 檔案。

我通常的習慣是會將整個網站會用到的 Theme 定義在 web.config 中,才不用再每一頁的第一行加上 Theme="XXXXTheme" 的屬性宣告。不過如果你網站中某一頁不想要設定任何 Theme 的時候,你也可能會直覺得想到在頁面第一行宣告 <%@ Page EnableTheming="false" %> 用以關閉 Theme 的套用,但這是有問題的!

我所遇到的問題是設定了 EnableTheming="false" 的確會將所有 *.skin 的套用關閉,但是該 Theme 目錄下的所有 *.css 檔案還是依然會載入到頁面中,導致我的頁面的 Layout 還是被不想載入的 Style Sheet 設定給破壞。我自己是有研究出兩種解決方法:

第一種: 在 App_Theme 目錄下新增一個 None 目錄,裡面不要放任何檔案,並在頁面加上 <%@ Page Theme="None" %> 的設定即可。

第二種: 在頁面中設定 <%@ Page Theme="" StyleSheetTheme="" %> 就可以同時關閉 Theme 與 StyleSheetTheme 了。

相關連結