ASP.NET 2.0(C#) - Themes(主题)
生活随笔
收集整理的這篇文章主要介紹了
ASP.NET 2.0(C#) - Themes(主题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文鏈接:http://www.netfocus.cn/article1648.html
作者:webabcd
介紹
使用 ASP.NET 2.0 的“主題”功能,可以將樣式和布局信息分解為單獨的文件組,統稱為“主題”。然后,主題可應用于任何站點,影響站點中頁和控件的外觀。這樣,通過更改主題即可輕松地維護對站點的樣式更改,而無需對站點各頁進行編輯。還可與其他開發人員共享主題。
關鍵
1、在web site中添加App_Themes文件夾,可以在每個主題文件加內添加.skin文件、.css文件(指定主題后會自動加載主題下所有.css文件)或者圖片文件
2、在web.config的<system.web>元素下的<pages>元素下設置theme或者styleSheetTheme屬性(針對全局);在頁的@Page指令里設置Theme或者StylesheetTheme屬性(針對當前頁)
3、Theme定義的樣式不可以覆蓋;StylesheetTheme定義的樣式可以覆蓋
4、.skin文件里不設置SkinId則就是默認的,設置了SkinId后則對應控件的SkinId屬性
5、動態修改Page的Theme要在Page_PreInit方法中實現
示例
Blue主題
<asp:Label?runat="server"?BackColor="blue"?ForeColor="white"?/>
<asp:Label?runat="server"?BackColor="DarkBlue"?ForeColor="white"?SkinId="Dark"?/>
<%--ImageUrl如下設置則解析到該主題下的Images文件夾的pic.jpg文件--%>
<asp:Image?runat="server"?ImageUrl="Images/pic.jpg"?/>
Red主題
<asp:Label?runat="server"?BackColor="red"?ForeColor="white"?/>
<asp:Label?runat="server"?BackColor="DarkRed"?ForeColor="white"?SkinId="Dark"?/>
<%--ImageUrl如下設置則解析到該主題下的Images文件夾的pic.jpg文件--%>
<asp:Image?runat="server"?ImageUrl="Images/pic.jpg"?/>
主題測試-Theme
Themes/Theme.aspx
<%@?Page?Language="C#"?MasterPageFile="~/Site.master"?AutoEventWireup="true"?CodeFile="Theme.aspx.cs"
????Inherits="Themes_Theme"?Title="主題測試-Theme"?Theme="Blue"?%>
<asp:Content?ID="Content1"?ContentPlaceHolderID="ContentPlaceHolder1"?runat="Server">
????<p>
????????在頁頭部分指定Theme="Blue"</p>
????<p>
????????相關主題文件,我覺得最好把樣式寫在css里然后設置控件的CssClass屬性
????????<br?/>
????????<asp:Label?ID="Label1"?runat="server"?BackColor="blue"?ForeColor="white"?/>
????????<br?/>
????????<asp:Label?ID="Label2"?runat="server"?BackColor="DarkBlue"?ForeColor="white"
????????SkinId="Dark"?/>
????</p>
????<p>
????????<asp:Label?ID="lbl"?runat="Server"?Text="不做任何設置(使用主題中的沒設置SkinId的樣式)"?/>
????</p>
????<p>
????????<asp:Label?ID="lbl2"?runat="Server"?Text="設置BackColor為black(因為設置的是頁的Theme屬性,所以無法覆蓋原有樣式)"?BackColor="black"?/>
????</p>
????<p>
????????<asp:Label?ID="lbl3"?runat="Server"?Text="主題測試設置SkinID為dark(指定SkinId)"?SkinID="dark"?/>
????</p>
</asp:Content>
主題測試-StylesheetTheme
Themes/StylesheetTheme.aspx
<%@?Page?Language="C#"?MasterPageFile="~/Site.master"?AutoEventWireup="true"?CodeFile="StylesheetTheme.aspx.cs"
????Inherits="Themes_StylesheetTheme"?Title="主題測試-StylesheetTheme"?StylesheetTheme="Red"?%>
<asp:Content?ID="Content1"?ContentPlaceHolderID="ContentPlaceHolder1"?runat="Server">
????<p>
????????在頁頭部分指定StylesheetTheme="Red"</p>
????<p>
????????相關主題文件,我覺得最好把樣式寫在css里然后設置控件的CssClass屬性
????????<br?/>
????????<asp:Label?ID="Label1"?runat="server"?BackColor="red"?ForeColor="white"?/>
????????<br?/>
????????<asp:Label?ID="Label2"?runat="server"?BackColor="DarkRed"?ForeColor="white"?SkinId="Dark"
????????/>
????</p>
????<p>
????????<asp:Label?ID="lbl"?runat="Server"?Text="不做任何設置(使用主題中的沒設置SkinId的樣式)"?/>
????</p>
????<p>
????????<asp:Label?ID="lbl2"?runat="Server"?Text="設置BackColor為black(因為設置的是頁的StylesheetTheme屬性,所以無法覆蓋原有樣式)"?BackColor="black"?/>
????</p>
????<p>
????????<asp:Label?ID="lbl3"?runat="Server"?Text="主題測試設置SkinID為dark(指定SkinId)"?SkinID="dark"?/>
????</p>
</asp:Content>
主題測試-動態加載主題
Themes/Dynamic.aspx
<%@?Page?Language="C#"?MasterPageFile="~/Site.master"?AutoEventWireup="true"?CodeFile="Dynamic.aspx.cs"
????Inherits="Themes_Dynamic"?Title="主題測試-動態加載主題"?%>
<asp:Content?ID="Content1"?ContentPlaceHolderID="ContentPlaceHolder1"?runat="Server">
????<p>
????????相關.skin文件內容如下:<asp:Image?runat="server"?ImageUrl="Images/pic.jpg"?/>
????</p>
????<p>
????????<a?href="?theme=blue">藍色主題</a>? <a?href="?theme=red">紅色主題</a>
????</p>
????<p>
????????該Image控件應用主題中的樣式,包括ImageUrl
????????<br?/>
????????<asp:Image?ID="img"?runat="server"?/>
????</p>
</asp:Content>
Themes/Dynamic.aspx.cs
using?System;
using?System.Data;
using?System.Configuration;
using?System.Collections;
using?System.Web;
using?System.Web.Security;
using?System.Web.UI;
using?System.Web.UI.WebControls;
using?System.Web.UI.WebControls.WebParts;
using?System.Web.UI.HtmlControls;
public?partial?class?Themes_Dynamic?:?System.Web.UI.Page
{
????protected?void?Page_Load(object?sender,?EventArgs?e)
????{
????}
????protected?void?Page_PreInit(object?sender,?System.EventArgs?e)
????{
????????//?動態修改Page的Theme要在Page_PreInit方法中實現
????????if?(!String.IsNullOrEmpty(Request.QueryString["theme"]))
????????{
????????????Page.Theme?=?Request.QueryString["theme"];
????????}
????????else
????????{
????????????Page.Theme?=?"blue";
????????}
????}
}
OK
[源碼下載]
作者:webabcd
介紹
使用 ASP.NET 2.0 的“主題”功能,可以將樣式和布局信息分解為單獨的文件組,統稱為“主題”。然后,主題可應用于任何站點,影響站點中頁和控件的外觀。這樣,通過更改主題即可輕松地維護對站點的樣式更改,而無需對站點各頁進行編輯。還可與其他開發人員共享主題。
關鍵
1、在web site中添加App_Themes文件夾,可以在每個主題文件加內添加.skin文件、.css文件(指定主題后會自動加載主題下所有.css文件)或者圖片文件
2、在web.config的<system.web>元素下的<pages>元素下設置theme或者styleSheetTheme屬性(針對全局);在頁的@Page指令里設置Theme或者StylesheetTheme屬性(針對當前頁)
3、Theme定義的樣式不可以覆蓋;StylesheetTheme定義的樣式可以覆蓋
4、.skin文件里不設置SkinId則就是默認的,設置了SkinId后則對應控件的SkinId屬性
5、動態修改Page的Theme要在Page_PreInit方法中實現
示例
Blue主題
<asp:Label?runat="server"?BackColor="blue"?ForeColor="white"?/>
<asp:Label?runat="server"?BackColor="DarkBlue"?ForeColor="white"?SkinId="Dark"?/>
<%--ImageUrl如下設置則解析到該主題下的Images文件夾的pic.jpg文件--%>
<asp:Image?runat="server"?ImageUrl="Images/pic.jpg"?/>
Red主題
<asp:Label?runat="server"?BackColor="red"?ForeColor="white"?/>
<asp:Label?runat="server"?BackColor="DarkRed"?ForeColor="white"?SkinId="Dark"?/>
<%--ImageUrl如下設置則解析到該主題下的Images文件夾的pic.jpg文件--%>
<asp:Image?runat="server"?ImageUrl="Images/pic.jpg"?/>
主題測試-Theme
Themes/Theme.aspx
<%@?Page?Language="C#"?MasterPageFile="~/Site.master"?AutoEventWireup="true"?CodeFile="Theme.aspx.cs"
????Inherits="Themes_Theme"?Title="主題測試-Theme"?Theme="Blue"?%>
<asp:Content?ID="Content1"?ContentPlaceHolderID="ContentPlaceHolder1"?runat="Server">
????<p>
????????在頁頭部分指定Theme="Blue"</p>
????<p>
????????相關主題文件,我覺得最好把樣式寫在css里然后設置控件的CssClass屬性
????????<br?/>
????????<asp:Label?ID="Label1"?runat="server"?BackColor="blue"?ForeColor="white"?/>
????????<br?/>
????????<asp:Label?ID="Label2"?runat="server"?BackColor="DarkBlue"?ForeColor="white"
????????SkinId="Dark"?/>
????</p>
????<p>
????????<asp:Label?ID="lbl"?runat="Server"?Text="不做任何設置(使用主題中的沒設置SkinId的樣式)"?/>
????</p>
????<p>
????????<asp:Label?ID="lbl2"?runat="Server"?Text="設置BackColor為black(因為設置的是頁的Theme屬性,所以無法覆蓋原有樣式)"?BackColor="black"?/>
????</p>
????<p>
????????<asp:Label?ID="lbl3"?runat="Server"?Text="主題測試設置SkinID為dark(指定SkinId)"?SkinID="dark"?/>
????</p>
</asp:Content>
主題測試-StylesheetTheme
Themes/StylesheetTheme.aspx
<%@?Page?Language="C#"?MasterPageFile="~/Site.master"?AutoEventWireup="true"?CodeFile="StylesheetTheme.aspx.cs"
????Inherits="Themes_StylesheetTheme"?Title="主題測試-StylesheetTheme"?StylesheetTheme="Red"?%>
<asp:Content?ID="Content1"?ContentPlaceHolderID="ContentPlaceHolder1"?runat="Server">
????<p>
????????在頁頭部分指定StylesheetTheme="Red"</p>
????<p>
????????相關主題文件,我覺得最好把樣式寫在css里然后設置控件的CssClass屬性
????????<br?/>
????????<asp:Label?ID="Label1"?runat="server"?BackColor="red"?ForeColor="white"?/>
????????<br?/>
????????<asp:Label?ID="Label2"?runat="server"?BackColor="DarkRed"?ForeColor="white"?SkinId="Dark"
????????/>
????</p>
????<p>
????????<asp:Label?ID="lbl"?runat="Server"?Text="不做任何設置(使用主題中的沒設置SkinId的樣式)"?/>
????</p>
????<p>
????????<asp:Label?ID="lbl2"?runat="Server"?Text="設置BackColor為black(因為設置的是頁的StylesheetTheme屬性,所以無法覆蓋原有樣式)"?BackColor="black"?/>
????</p>
????<p>
????????<asp:Label?ID="lbl3"?runat="Server"?Text="主題測試設置SkinID為dark(指定SkinId)"?SkinID="dark"?/>
????</p>
</asp:Content>
主題測試-動態加載主題
Themes/Dynamic.aspx
<%@?Page?Language="C#"?MasterPageFile="~/Site.master"?AutoEventWireup="true"?CodeFile="Dynamic.aspx.cs"
????Inherits="Themes_Dynamic"?Title="主題測試-動態加載主題"?%>
<asp:Content?ID="Content1"?ContentPlaceHolderID="ContentPlaceHolder1"?runat="Server">
????<p>
????????相關.skin文件內容如下:<asp:Image?runat="server"?ImageUrl="Images/pic.jpg"?/>
????</p>
????<p>
????????<a?href="?theme=blue">藍色主題</a>? <a?href="?theme=red">紅色主題</a>
????</p>
????<p>
????????該Image控件應用主題中的樣式,包括ImageUrl
????????<br?/>
????????<asp:Image?ID="img"?runat="server"?/>
????</p>
</asp:Content>
Themes/Dynamic.aspx.cs
using?System;
using?System.Data;
using?System.Configuration;
using?System.Collections;
using?System.Web;
using?System.Web.Security;
using?System.Web.UI;
using?System.Web.UI.WebControls;
using?System.Web.UI.WebControls.WebParts;
using?System.Web.UI.HtmlControls;
public?partial?class?Themes_Dynamic?:?System.Web.UI.Page
{
????protected?void?Page_Load(object?sender,?EventArgs?e)
????{
????}
????protected?void?Page_PreInit(object?sender,?System.EventArgs?e)
????{
????????//?動態修改Page的Theme要在Page_PreInit方法中實現
????????if?(!String.IsNullOrEmpty(Request.QueryString["theme"]))
????????{
????????????Page.Theme?=?Request.QueryString["theme"];
????????}
????????else
????????{
????????????Page.Theme?=?"blue";
????????}
????}
}
OK
[源碼下載]
轉載于:https://www.cnblogs.com/scgw/archive/2008/03/11/1100453.html
總結
以上是生活随笔為你收集整理的ASP.NET 2.0(C#) - Themes(主题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 异常详细信息: System.Runti
- 下一篇: Mobile RDA 同步数据库的类--