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"];
}
了解了這些技術,將會讓網站更加多變。
新聞熱點
疑難解答
圖片精選