ASP.NET 2.0网站换肤实现过程

一、简介:

 

  利用Themes我们可以很容易的更改控件、页面的风格,而不需要修改我们的代码和页面文件。Themes文件被单独的放在1App_Themes文件夹下面,与你的程序是完全分开的。

 

  二、怎么使用ThemesSkins

 

  先看个非常简单的实例:

 

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

 

  

  default.aspx:文件代码:

 

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

  

 

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

 

  App_Themes文件夹:

 

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

 

 

 

  使用themes

 

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

 

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

 

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

 

  如果要在所有页面上使用相同的Theme,在web.config中的<system.web>节点下加上句<pages theme="..."/>

 

  3、让控件不应用Theme:

 

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

 

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

 

App_Themes/default/1.skin

 

  

deafult.aspx

 

  

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

 

  4、其他方法:

 

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

 

  App_Themes/default/1.skin

 

  

  default.aspx

 

  

  运行结果,所有的labelforecolor都为red

 

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

 

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

 

  aStyleSheetTheme引用的风格

 

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

 

  cTheme引用的风格(覆盖前面2)

 

  theme中包含CSS

 

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

 

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

 

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

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值