NOTE:这里在说一下CSS,如果你的CSS水平足够强,XHTML的代码写得足够好,那么你无需搞得这么复杂,仅仅使用CSS就可以实现换肤了。www.csszengarden.com有这样的一个项目提供给全世界的人作为实践,它提供一套统一的XHTML代码,其他人则自己编写CSS来对这个XHTML代码进行样式化,结果是百花齐放,一模一样的XHTML实现了风格迥异的页面设计。
现在在看一下表现部分,表现层分为全局式的CSS以及基于控件的皮肤Skin,这些都可以交由主题Theme来完成。
.Net 设置上的局限
看到这里,你可能觉得不用往下看了,使用Master Page和Theme谁不会啊。现在我们就讨论下.Net 中Master Page 和 Theme 的局限:
大家知道,我们可以在 Web.config中的System.Web结点下的pages结点中添加Theme和masterPageFile属性来对网站进行设置。但是它提供了一个全局性的配置,就是对于整个站点的所有页面,都将使用这个Master Page。而有时候我们希望能够每个页面不相同,这里就无法实现了。虽然我们可以通过使用location结点来为各个页面进行单独设置,但是显然太麻烦了。 我们希望每个风格都有个名字,比如说“默认风格”、“春意盎然”。 我们希望用户可以选择风格,而不是像博客园这样由博主设置风格。实现网站的风格切换
自定义风格配置
有了思路后我们就来一步步地实现它,我们希望可以对风格进行简单的设置,我们应该先明确需要设置的内容:我们都有哪些风格、当前使用的风格是什么、每个风格使用了什么主题、哪个页面对应哪个模板。了解了这些之后,我们可以写下这样的结点配置来:
<!-- MasterPage的 Path为 masterRoot + theme + master -->
<!-- 不为Default设置masterPage,
使用Default风格时会使用创建页面时所选择的Master Page -->
<styleTemplates default="默认风格" masterRoot="~/MasterPage">
<style name="默认风格" theme="Default" ></style>
<style name="春意盎然" theme="Spring" >
<masterPages>
<page path="/website/default.aspx" master="Default.master" />
<!--<page path="/other.aspx" master="Default.master" />-->
<page path="/default.aspx" master="Default.master" />
</masterPages>
</style>
</styleTemplates>
styleTemplates是风格设置的根节点,default是默认的风格名称;masterRoot是指模板页的根目录的地址;style结点是各个风格的名称,以及其所使用的主题的名称;style结点下的masterPages结点组包含此风格所使用的模板的信息;其中Page子结点对应每个独立的页面,path属性记录的是页面的路径,master属性是每个页面对应的模板的路径。








