ASP.NET/Theme

維基教科書,自由的教學讀本

APP_Theme文件夾中的不同主題(Theme)包括的內容有:皮膚(skin),CSS樣式,圖片、其他資源

Asp.Net,attributes與elements的主題選擇的優先順序:

  1. @Page中的Theme特性
  2. Web.config文件中的<system.Web>下的<pages Theme="themeName">元素中的特性設置
  3. 本地控件的特性設置
  4. @Page中的StyleSheetTheme特性設置
  5. Web.config文件中的<system.Web>下的<pages StytleSheetTheme="themeName">元素中的特性設置

更換皮膚時需要指明 SkinID , ImageUrl

Page.MasterPageFile與Page.Theme這2個屬性都是在PreInit()中設置。

ASP.NET 2.0 中新增加了 Theme 的功能。Theme的實現包括CSS、Skin。

  1. 在 Web 項目中創建 App_Themes 目錄。它是預定義的目錄,ASP.NET 2.0 會自動識別其目錄下的 Theme 。
  2. 在 App_Themes 目錄創建子目錄。每個子目錄就是一個theme
  3. 為 App_Themes 下的每個子目錄添加 Skin 文件,如my1.Skin。ASP.NET 2.0 會自動分析每一個 Skin 文件,在這裏的命名只需要為了開發時方便分類。
  4. 為 App_Themes 下的每個子目錄添加 CSS 文件。ASP.NET 2.0會自動將每一個 CSS 文件添加到每一個使用此樣式的頁面中去。

在子頁面的page 頁面指令中可以指明使用哪個theme。例如: <%@ Page Theme="OrangeTheme">

如果想到在整個網站應用某個Theme 就需要在 Web.Config 定義。

<configuration>  
  <system.web>  
    <pages theme="OrangeTheme" />  
  </system.web>  
</configuration>

這樣的定義相當於默認一個 Theme 在所有網站文件中,使用時仍可以為每個頁面定義 Theme 。

如果想用編程方式定義 Theme 必需在 Page_PreInit事件中處理,如下:

void Page_PreInit(object sender, EventArgs e)  
{  
    Page.Theme = Request["ThemeName"];  

  //  如果需要以编程的方式为 Page 载入 MasterPage 文件,也需要在此定义。  
    this.MasterPageFile = Request["MasterPageFile"];  
}

禁用單個頁面的主題,只要將@Page指令的EnableTheming屬性設置成false即可。<%@Page EnableTheming="false"%>

如果想禁用單個控件的主題,只要將控件的EnableTheming屬性設置為false即可。<asp:Button id="Button1" runat="server" Enable Theming="false"/>