您的位置:首页 > 运维架构 > 网站架构

用Themes实现网站换肤

2007-10-16 11:30 555 查看
一、简介:

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

  二、怎么使用Themes和Skins:

  先看个非常简单的实例:

App_Themes/default/1.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">
<title>Page with Example Theme Applied</title>
</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" /><br />
</form>
</body>
</html>


  可以看到我们在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中的<system.web>节点下加上句<pages theme="..."/>

  3、让控件不应用Theme:

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

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

App_Themes/default/1.skin

<asp:label runat="server" font-bold="true" forecolor="Red" />
<asp:label runat="server" SkinID="Blue" font-bold="true" forecolor="blue" />

deafult.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">
<title>Page with Example Theme Applied</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label2" runat="server" Text="Hello 2" SkinID="Blue" /><br />
<asp:Label ID="Label3" runat="server" Text="Hello 3" /><br />
</form>
</body>
</html>

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

  4、其他方法:

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

  App_Themes/default/1.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了。
posted @ 2007-08-21 23:05 搞IT的狐狸 阅读(191) | 评论 (1) | 编辑

2007年8月13日

(北京)求职ASP.NET程序开发人员

07应届毕业,目前在北京(希望工作于北京)

姓 名:王加男 出生日期: 1986/10/07

性 别: 男 政治面貌: 团 员

民 族: 汉 族 学 历: 大 专

专 业:软件技术 籍 贯: 哈尔滨

毕业院校: 哈尔滨华夏学院软件技术系

求职意向: ASP.NET程序开发人员

【专业技能】

熟悉ASP.NET(C#);

熟悉HTML、XHTML、CSS ;

熟悉JavaScript(DOM);

熟悉SQL Server 数据库系统;

掌握AJAX、ASP.NET AJAX、XML;

了解Web Services与面向对象编程;

曾负责www.mindpin.comwww.cnw.cn的相关开发工作;

对大型网站多层架构模式,有所了解和认识;

【工作经历】

团队经历

2005年10月—2006年1月,参加为期三个月的“校园公司建模创业大赛”,并担任公司集团董事长,带领团队取得佳绩,同时创办校园网“华夏E网”

校园实践经历

2005年9月—2005年10月校园实训阶段,独自开发基于C/S结构的图书管理系统(开发工具 Delphi 8.0 使用 Access2000数据库)。

2006年5月—2006年7月校园实训阶段参加网络图书管理系统开发团队,成功开发基于B/S结构的网络版图书管理系统(开发工具 Visual Studio 2003,数据库工具 SQL Server 2000, 基于ASP.NET(C#)技术)。

企业工作经历

2006年9月—2007年2月,于北京远景动力科技公司担任程序员,负责www.mindpin.com (思维拼图网)的开发与维护工作,负责该站全部CSS,数据库,C#的编写开发工作,JAVASCRIPT,AJAX,XML的部分工作,同时负责该站的策划工作。

2007年2月-2007年4月,于计算机世界传媒集团(CCW)网络世界部(CNW)实习,参与开发www.cnw.cn(网界网)的全新.NET重构版本.

2007年4月-2007年7月,于法国益普索集团(IPSOS)IT技术部担任程序员,负责集团内网建设与重构,同时负责IPSOS客户网络、网站产品的编程工作.

【其他技能】

熟练使用 Visual Studio.net 2003/2005, SQL Server 2000/2005开发工具

熟练使用 Microsoft Office 日常办公软件

熟练使用Microsoft Expression Web ,Flash , Dreamweaver , Fireworks 网页设计三剑客工具

【自我评价】

我是一个对理想有着执着追求的人,坚信是金子总会发光,乐观,自信的我总能很快的融入到团队中去,曾在校园公司担任董事长的我,有着很好的规划能力,人际沟通能力与团队合作精神,特别善于表达,心理素质较高,能承受压力。思维活跃而且思路清晰,对于新事物有较高的兴趣和敏锐的判断力(这个得益于前期参与开发的锻炼思维能力的思维拼图网),具有较高的分析问题,解决问题的能力,英语良好。创办论坛“华夏E网”期间,时刻改正自己的规划错误,并总结,使我逐渐养成了“换位思考”的习惯,最终论坛访问量直线增加,取得成功。我相信一个思维活跃的人会有Good Idea,我相信一个思路清晰的人会有很好的行动能力,我相信一个好的表达能力能很好的与人沟通合作,我相信善于总结的人能走的更远。

希望能凭借我的诚意加盟贵公司,成为一个程序员。希望企业给我一点阳光,我就能给您一片灿烂 ^_^。

【所获奖项/其它】

“校园公司建模创业大赛”团体银奖,最佳形象,最佳管理荣誉;

荣获学院优秀毕业生称号 (全校仅五名)

荣获学院最佳实习生称号(全校仅五名)

韩国旅游发展局www.tour2korea.com 最佳BBS设计奖(一等奖);

兴趣爱好:爱好广泛,喜欢写技术博客,网站开发、网站研究、硬件研究、摄影、音乐、杂志。

技术博客:http://huohuu.cnblogs.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: