Theme 讓網站「換膚」變得標準化、可維護。核心三要素:CSS(HTML 樣式)、Skin(伺服器控件外觀)、MasterPage(版面架構,不屬於 Theme 但配合使用)。
App_Themes 資料夾(ASP.NET 自動識別)。OrangeTheme、BlueTheme。.skin 檔與 .css 檔,檔名自訂,ASP.NET 會自動合併套用。<!-- 預設 Skin:套用所有 TextBox -->
<asp:TextBox BackColor="Orange" ForeColor="DarkGreen" Runat="Server" />
<asp:Button BackColor="Orange" ForeColor="DarkGreen" Font-Bold="True" Runat="Server" />
<!-- 命名 Skin:僅套用 SkinID=Title 的 TextBox -->
<asp:TextBox SkinID="Title" BackColor="Orange" ForeColor="DarkGreen" Runat="Server" />
注意:Skin 僅能設定外觀屬性(Color、Font 等),不可設定 AutoPostBack 等行為屬性。
| 層級 | 語法 | 優先級 |
|---|---|---|
| 頁面 | <%@ Page Theme="OrangeTheme" %> | 最高 |
| 網站 | <pages theme="OrangeTheme" /> 在 web.config | 中 |
| 程式碼 | Page.Theme = "OrangeTheme"; 在 Page_PreInit | 最高(動態) |
void Page_PreInit(object sender, EventArgs e)
{
Page.Theme = Request["ThemeName"];
// 同處理動態 MasterPage
this.MasterPageFile = Request["MasterPageFile"];
}
Theme 屬性決定套用哪個主題資料夾的 Skin。善用 Theme + MasterPage + CSS,可構建高度可配置的多風格網站架構。