繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> ASP.NET2.0中themes、Skins轻松实现网站换肤!

ASP.NET2.0中themes、Skins轻松实现网站换肤!

2007-09-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:可能有些朋友还不是很清楚themes、skins。下面先介绍下themes、skins.。 一、简介: 一看Themes、Skins这2名字就都知道是用来做什么的了吧,下面就说下它是做什么的(怎么都知道了还说,~_~),利用Themes我们可以很...

可能有些朋友还不是很清楚themes、skins。下面先介绍下themes、skins.。

一、简介:

一看Themes、Skins这2名字就都知道是用来做什么的了吧,下面就说下它是做什么的(怎么都知道了还说,~_~),利用Themes我们可以很容易的更改控件、页面的风格,而不需要修改我们的代码和页面文件。

Themes文件被单独的放在1个App_Themes文件夹下面,与你的程序是完全分开的。

二、怎么使用Themes和Skins:

先看个非常简单的实例:

App_Themes\default\1.skin文件代码:

default.ASPx:文件代码:

<%@ Page Language="C#" Theme="default" %>

Page with Example Theme Applied



可以看到我们在default.ASPx并没有写如何的控制style的代码,但运行取发现label上的字都变成了粗体红色了,这就是1个最基本的theme例子。

App_Themes文件夹:

App_Themes文件夹位于程序的根目录下,App_Themes下必须是Theme名称的子文件夹,子文件夹中可以包含多个.skin和.CSS文件。下图中建立2个Theme,名称分别为default和default2:

使用themes

1、在1个页面中应用Theme:

如果想在某1个页面中应用Theme,直接在ASPx文件中修改<%@ Page Theme="..." %>,比如你想这个页面应用default2 theme,设置<%@ Page Theme="default2" %>就OK

2、在所有页面应用同1个Theme:

如果要在所有页面上使用相同的Theme,在web.config中的节点下加上句

3、让控件不应用Theme:

第1个例子中我们看到了2个Label的风格都变了,就是说.skin文件中的风格在页面上所有Label都起作用了。但有时我们希望某1个Label不应用.skin中的风格,这时你只需设置Label的EnableTheming属性为false的时候就可以了。

也许你还想不同的label显示不同的风格,你只需设置label的SkinID属性就可以,见下面的实例:

App_Themes\default\1.skin

deafult.ASPx

<%@ Page Language="C#" Theme="default" %>

Page with Example Theme Applied



运行后就会发现2个label显示的风格不一样了。

4、其他方法:

前面已经说了在ASPx文件头使用 <%@ Page Theme="..." %> 来使用theme,而用这个方法应用theme中的风格将会覆盖你写在ASPx中的控件属性style。比如:

App_Themes\default\1.skin

default.ASPx

<%@ Page Language="C#" Theme="default" %>


运行结果,所有的label的forecolor都为red。

而使用<%@ Page StyleSheetTheme="..." %>应用theme就不会覆盖你在ASPx文件中写的属性style:

控件应用style属性的顺序如下:

a、StyleSheetTheme引用的风格

b、代码设定的控件属性(覆盖StyleSheetTheme)

c、Theme引用的风格(覆盖前面2个)

theme中包含CSS:

theme中也可以使用.CSS文件,当你把.CSS文件放在1个theme目录下后,在用到了这个theme的页面中自动会应用你的.CSS的

三、后台代码轻松为网站换府肤

前面讲的都是在ASPx文件或web.config中应用theme,而在blog这样的每个用户都有不同的skin的网站中用上面的方法来实现换skin显然是不方便的。

下面就介绍怎么在后台代码中动态的引用theme来解决上面的情况,theme必须在page被请求的最早期就应用上,所以我们必须在Page_PreInit事件中写代码,代码很简单,就1句:

Page.Theme = "...";

这里我们只要从数据库中去读取每个用户设置的不同theme名就可以轻松实现每个用户都有不同的skin了。

------------------------------------------

以上都是个人的看法和体会,如有不妥处,还请大家多多指点,谢谢!

责任编辑:admin
相关文章