ASP.NET 2.0 內建 主題與皮膚 機制,讓網站外觀切換零程式碼、設計時可見、學習曲線平緩。本文完整說明使用步驟、運作原理、Theme 與 StyleSheetTheme 差異與優雅之處。
Black Skin

White Skin

App_Themes 資料夾.css、.skin、圖片、Flash 等資源CssClass 對應 CSS 類別名SkinID 對應 .skin 定義的 skinidWeb.config <pages StyleSheetTheme="ThemeName" /><%@ Page StylesheetTheme="ThemeName" %> 或 Page.StyleSheetTheme = "ThemeName"User.IsInRole("RoleName") 動態決定
.column { background-image: url(images/content-shim.gif); }
.gradient { background-image: url(images/content-shim-photo.gif); }
.solid { background-image: url(images/content-shim-none.gif); }
.header {
background-image: url(Images/header.gif);
background-repeat: no-repeat;
position: relative; width: 789px; height: 76px; margin: 0 auto 5px auto;
}
<asp:imagebutton runat="server" Imageurl="Images/button-login.gif" skinid="login" />
<asp:image runat="server" Imageurl="Images/button-create.gif" skinid="create" />
<asp:image runat="server" ImageUrl="Images/button-download.gif" skinid="download"/>
原則:不同主題的 CSS 與 Skin 結構應完全相同,僅屬性值差異。
SkinID,Page 類別新增 Theme/StyleSheetTheme 屬性測試發現:生成頁面中 <link href='...'> 位置不同——StyleSheetTheme 在 <title> 前,Theme 在後。CSS 載入優先序差異導致覆寫行為不同,Theme 優先級較高,可覆寫頁面內部樣式。