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

分类: asp.net   出处:iocblog整理  更新时间:2008-12-26   添加到收藏  

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

<asp:label font-bold="true" forecolor="red" runat="server" />
default.aspx

<%@ page language="c#" theme="default" %>
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="head1" runat="server">
</head>
<body>
  <form id="form1" runat="server">
      <asp:label id="label1" runat="server" text="hello 1" /><br />
      <asp:label id="label2" runat="server" text="hello 2" forecolor="blue" />
  </form>
</body>
</html>
运行结果,所有的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了。

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

 

上一页 [1] [2]


Tag: themes ,控件



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。