主題和皮膚
主題類似於層疊樣式表(CSS),因爲它們都可以爲Web頁面定義各種樣式。但主題比CSS更進一步,它允許給應用程序的頁面應用樣式、圖像甚至CSS文件,可以在應用程序、頁面或服務器控件級別上應用ASP.NET中的主題。
創建主題:
一、 創建外觀文件
1.在項目中添加App_Themes文件夾
2.在App_Themes文件夾下添加主題文件夾
1)可以有多個主題
3.在主題文件下添加外觀文件(.skin)
1)在.skin外觀文件中可以定義Web服務器控件的外觀,定義的樣式類似aspx頁面中的控件的標籤,只是去除“id”等非外觀屬性。(可以在頁面中設置好控件樣式,將設置好的標籤複製到.skin外觀文件中,再將非外觀屬性刪除即可)
2)外觀樣式的定義可以添加屬性skinid,如<asp:TextBox skinid="myinput" bordercolor="red" ....../>
3)添加了skinid的外觀叫做已命名外觀,未添加的叫默認外觀。默認外觀會應用於所有未指定skinid屬性的控件。而已命名外觀只應用於指定了skinid屬性的控件。
4)外觀的定義中,必須包含runat=“server"的屬性。
二、 爲主題添加CSS樣式
1)可以在主題目錄下添加CSS樣式表文件,在將主題應用與頁面時,CSS樣式將自動被引入aspx頁面。
2)注意css樣式的定義中,先定義的樣式先應用到頁面,後定義的樣式後應用與頁面。一些樣式會改變前面的樣式,應確保樣式的定義順序正確。
3)如果css中定義的樣式和外觀定義的樣式不一致,將優先使用外觀樣式。
應用主題:
1.禁用主題
1)用主題(.skin)使用Page指令的EnableTheming屬性指定頁面是否使用主題(.skin)。
2)使用控件的EnableTheming屬性指定特定控件是否使。
2.動態加載主題
必須在頁面上靜態控件的Page_PreInit事件觸發之前設置Page屬性的主題。如果使用動態控件,就應在把該控件添加到Controls集合中之前,設置Theme屬性。同樣在設置控件的skinid屬性時,也需要遵循同樣的規則。