Dynamic Theme
Please select a Theme:
一、建立主題
在名為App_Themes的應用程式的資料夾中新增資料夾就可以建立主題。在App_Themes中新增的每一個資料夾都代表一個主題。
在主題資料夾中比較重要的檔案型別有皮膚檔案和CSS檔案。
二、在主題中新增皮膚
一個主題可能包含一個或多個皮膚檔案。可以通過皮膚來修改所有具有皮膚效果的ASP.NET控制元件屬性。
例如,將Web應用程式中所有的TextBox控制元件的背景顏色設為黃色並選擇dotted作為它的邊框樣式。在App_Themes資料夾下建立Simple資料夾,然後在Simple資料夾中建立TextBox.skin檔案,該檔案程式碼如下所示:
注意上面程式碼裡面runat是必須的,而且不能帶ID屬性。
主題資料夾下可以擁有一個或上百給皮膚檔案,但在一個主題資料夾下的所有的檔案都會編譯成一個主題類。
上面的主題資料夾Simple如果要在某個頁面使用其定義的主題,則使用如下程式碼:
如果該頁面的TextBox控制元件屬性EnableTheming設定為false,則主題不起作用。
1、 建立命名皮膚
在定義命名皮膚時比定義預設皮膚增加SkinID屬性,在應用主題頁面指定控制元件的SkinID屬性為命名皮膚定義的SkinID屬性名稱即可。
2、 Themes和StyleSheetThems
使用Themes指定應用某個主題時候,主題定義皮膚會覆蓋頁面中控制元件自定義的皮膚。
而使用StyleSheetThems指定則不會覆蓋。
3、 禁用皮膚
每個控制元件都包含有EnableTheming屬性,設定為false則禁用主題皮膚。
4、 在Web配置檔案中註冊主題
在啟用程式中的主題後,可以在特定頁面中通過
來禁用主題。
三、在主題中新增CSS
除了使用主題皮膚外,也可以使用CSS來控制頁面上HTML元素和ASP.NET控制元件的皮膚。如果在主題資料夾下新增了CSS檔案,則在頁面應用主題時也會自動應用CSS。
四、建立全域性主題
此種情況本人應用較少,跳過。對於很少用到的知識而且又不是基礎性的,我的學習原則是知道有這個應用即可,待有機會真正用上時再學習也不遲。不然在技術的汪洋大海里面永遠也不知岸在哪裡。
五、動態應用皮膚
通過處理頁面的Page_PreInit事件可以在頁面動態應用主題。在請求頁面時,這是第一個被觸發的事件。在其後的Page_Load或Page_PreRender等事件中是不能動態應用主題的。
protected void Page_PreInit(object sender, EventArgs e)
{
if (Request["theme"] != null)
{
switch (Request["theme"])
{
case "Green":
Profile.userTheme = "GreenTheme";
break;
case "Pink":
Profile.userTheme = "PinkTheme";
break;
}
}
Theme = Profile.userTheme;
}
通過頁面的Theme屬性,特定主題可以應用到此頁面。通過在PreInit事件中將主題名稱賦給Theme屬性,主題將會應用到此頁面。
當把資訊儲存到Profile物件中時,在瀏覽多個站點時這個資訊仍然會保留。所以如果使用者選擇了一次自己喜歡的主題,那麼當使用者在以後再次返回到此站點時仍然會應用此主題。
在Web.Config檔案中定義Profile
<!--
-->
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-594854/,如需轉載,請註明出處,否則將追究法律責任。