程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 體驗.net2.0的優雅(2) ASP.net主題和皮膚

體驗.net2.0的優雅(2) ASP.net主題和皮膚

編輯:關於.NET

示例站點的截圖

black skin

white skin

看了一下visual web developer 中自帶的個人站點,發現aspnet2.0裡面的很多技術使用起來確實很優雅,比較典型的有 login控件和用戶系統、MasterPage、主題和皮膚、SiteMap等等。這些特性,甚至不需要教程就可以很快上手。本文要介紹的是主題和皮膚的應用。

(一)如何使用

1)在你的應用裡面添加 App_Themes 文件夾

2)將主題相關的文件(包括.css,、.skin文件、其他資源文件包括圖片、Flash等)組織到一個以主題名命名的文件夾中,將主題文件夾放於App_Themes目錄。如果有多個主題,重復上述步驟。

Example :

Css 文件(x.css)

.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;

}

Skin 文件(x.skin)

 <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"/>

理論上上來說,不同的主題中的樣式表和SKIN文件的結構都應該是完全相同的。

3)設置你要應用主題的控件的css樣式名為css中定義的樣式名(比如column、gradient)

設置你要應用主題的服務器控件的SkinId為Skin文件中定義的skinid(比如login、create等),這樣在Skin中定義的控件屬性會自動附加到當前的控件上(內部也是使用CSS實現的)

4)應用主題,有三種辦法

全局主題:在Web.config中<system.web>中添加<pages StyleSheetTheme ="ThemeName"/>節,這樣在整個應用中都會自動應用名為ThemeName 的主題

頁面主題:在ASPX文件頂部加入:<%@ Page Language="C#" StylesheetTheme=" ThemeName " %>,這樣當前頁面都會應用名為ThemeName 的主題,或者在ASPX_CS中加(Page_Load方法)入如下代碼 Page. StyleSheetTheme = “ThemeName”; 

角色主題:需要使用masterpage 來輔助實現 ,通過User.IsInRole(“RoleName”)來判斷用戶是否屬於某個角色,然後決定使用何種主題(Page. StyleSheetTheme = “ThemeName”);當然,使用這種辦法還可以應用用戶選擇的主題

如果你仍然感覺迷惑,請查看 Quick Start 。

(二)工作原理

不同的主題和皮膚之間的不同主要是頁面和頁面中的控件的樣式(包括字體、段落、背景、邊框等等)、部分圖片的不同。

傳統的完全使用CSS來表現不同的主題的方案,在處理圖片和圖片按鈕的地方往往心有余而力不足。而在aspnet2.0裡面一切都已經變得簡單。

主題和皮膚是 dotnet framework2.0內建支持的,服務器控件添加了SkinId屬性,Page類也添加了Theme 和 StyleSheetTheme 屬性,其目的就是優雅的支持Skin。在應用指定了主題之後,相關的頁面會自動鏈接位於主題目錄下的css文件和skin文件,css的用法跟傳統的用法沒有什麼區別,而skin文件則以一種類似於css的方式工作,指定了SkinId的服務器控件會自動從skin文件中加載並附加匹配的屬性或樣式(最常用的是Image 和ImageButton的ImageUrl屬性,這樣做可以使頁面在不同的主題下)---這是在服務器端完成的。由於skin文件在使用後是緩存在內存中的,所以效率不會有問題。

(三)Theme 和 StylesheetTheme 的區別

基本上,本文前面所有的 StyleSheetTheme 都可以替換為 Theme ,我猜想區別是使用 Theme 時位於主題文件夾中的 樣式表(CSS)文件不會被應用到主題中,但是根據我的測試,發現兩種情況下生成的頁面中,只有<link href=’’>這一節的位置不同,一個出現在<Title>標記前面,一個則是後面。

(四)優雅之處

a)完全Framework內建的支持、不再需要復雜的編程,甚至不再需要編程;

b)在vs2005中有非常友好的設計時支持,也就是說,在設計的時候你就可以看到某種主題的效果;

c)學習曲線很平緩,如果你熟悉CSS的話,則更加沒有難度。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved