ASP.NET 2.0 中新增了Theme 的功能,它的出現能讓網站實現換膚更加容易。
Theme 的實作包括:CSS、Skin、MasterPage。
CSS 是用來控制所有HTML 標記的外觀。
Skin 是用來控制所有ASP.NET 伺服器調整的外觀,並且可以透過屬性cssClass 定義它的CSS 樣式。
MasterPage 是*.aspx 頁面模版,不過它沒有被定義到Theme 中。
-------------------------------------------------- ------------------------------
·建立Theme 的範例:
1.在Web 專案中建立App_Themes 目錄。它是預先定義的目錄,ASP.NET 2.0 會自動辨識其目錄下的Theme 。
2.在App_Themes 目錄建立orangeTheme、BlueTheme 兩個子目錄。
3、為App_Themes 下的每個子目錄新增Skin 文件,如Control.Skin 。 ASP.NET 2.0 會自動分析每一個Skin 文件,這裡的命名只需要為了開發時方便分類。
4.也可以為 App_Themes 下的每個子目錄新增CSS 檔案。 ASP.NET 2.0 也會自動將每一個CSS 檔案加入到每一個使用此樣式的頁面中去。
·定義頁面內容與Theme 樣式
1、default.aspx 頁面定義如下:
<%@ Page Theme="OrangeTheme" %>
<html>
<head runat="server">
<title>Orange Page</title>
</head>
<body>
<form id="form1" runat="server">
Enter your name:<br />
<asp:TextBox ID="txtName" Runat="Server" />
<br /><br />
<asp:Button ID="btnSubmit" Text="Submit Name" Runat="Server"/>
</form>
</body>
</html>
2、在 OrangeTheme 首頁的Control.Skin 檔案中定義如下:
注意:只能指定外觀屬性,不能指定如AutoPastback 等屬性。
預設未命名的Skin 將會為所有TextBox 類型定義外觀。
<asp:TextBox BackColor="Orange" ForeColor="DarkGreen" Runat="Server" />
<asp:Button BackColor="Orange" ForeColor="DarkGreen" Font-Bold="True" Runat="Server" />
已經命名SkinID 的將可以為指定TextBox 類型定義外觀。
<asp:TextBox SkinID="Title" BackColor="Orange" ForeColor="DarkGreen" Runat="Server" />
·在頁面中使用Theme
1、在Aspx 檔案頂部<%@ Page %> 中新增Theme="Default " 屬性。這樣它就可以使用Default 主題了。
2.如果想到在整個網站應用某個Theme 就需要在Web.Config 定義。
<configuration>
<system.web>
<pages theme="OrangeTheme" />
</system.web>
</configuration>
這樣的定義相當於預設一個Theme 在所有網站檔案中,使用時仍可以為每個頁面定義Theme 。
Skin 部分會使用Page 面中定義的Theme ,而CSS 會重載預設主頁中的CSS 樣式表。
3.指定好Theme 之後所有的外觀都會使用Skin 中定義的。你也可以指定控制項的SkinID 來定義單獨外觀。
4.如果想用程式設計方式定義Theme 必需在Page_PreInit事件中處理,如下:
void Page_PreInit(object sender, EventArgs e)
{
Page.Theme = Request["ThemeName"];
如果需要以程式設計的方式為Page 載入MasterPage 文件,也需要在此定義。
this.MasterPageFile = Request["MasterPageFile"];
}
了解了這些技術,將會讓網站更加多變。