Master Page 和 Theme Skin
1.基本介绍
Asp.Net2.0 包含大量用于定制外观的新特性。其中,服务器端控件提供Style对象模型,用于定制字体、边界、背景前景颜色、宽度、高度等等信息。同时,控件还支持使用CSS定制其外观。还可以把所有这些定制在一些skin文件里,并把这些描述控件外观的skin文件放置在theme文件夹中,反复使用。
对于HTML控件,可以使用CSS来定制其外观,无论是客户端的HTML控件还是服务器端HTML控件,其定制方法都是一样的。 CSS既可以直接定制每个控件的显示风格,也可以定制一种风格并命名为一个类,只需要指定一个控件的显示风格是该类即可
代码设计和外观设计分离开来,这样,就更好的把程序员的工作和美工的工作进行分离。由于CSS和HTML是同时代的产品,因此,支持的CSS的功能不可能非常强大。对于复杂的控件就需要更加复杂的属性来订制外观。
2. 使用Theme文件夹
• Theme文件夹是用来存放各种skin的文件夹。Skin是一个特殊的文件,它记录了控件的各种外观属性,并定义为一个单独的文件,只需要对一个页面指定其Theme,页面中的控件就会按照skin定义中的显示模式显示。如:
<@page language = “C#” Theme = “Theme 1” >
没有使用Theme的页面
• 结构复杂,格式混乱,不容易修改和阅读
―――-把程序员些的业务逻辑代码和美工设计代码放到搅拌在一起,感觉就如同意大利空心粉,使得修改和阅读及其不方便。
使用Theme的页面
• 结构清晰,便于修改和阅读,便于复用。
――――把样式写入theme中,通过选择不同的theme,可以把页面设置成不同的样式。由此,程序员只需要在一个单独的文件中设计业务逻辑,而美工则只需要在theme中设计外观。
―――-使用代码访问Theme:程序员可以对通过代码调用Theme,这样,客户端的用户就可以更据自己的爱好,修改显示的Theme。即用户选择一个theme后,提交一个theme的字符串,服务端根据这个字符串选择不同的theme,完成用户的偏好设置。
3. 为skin命名
• 一个Theme可以包含很多skin文件,对同一个控件的的显示模式也可以有不同的定义,可以通过指定控件的skin Id属性,指定控件所使用的skin。这样,就可以方便的改变控件的外观了。
――― 一个theme可以包含多个skin文件,一般每个skin都是对一个控件进行描述,通过设置skin文件中的不同样式的skinID来显示不同的样式。但是,这要求程序员在写代码时,必须加入skinID来选择控件的样式。(如果没有skinID的为缺省样式)
注意事项
• 一旦使用Theme=定义了一个页面的theme,页面中对控件进行的属性设置会失败,如果希望页面中属性设置生效,需要在定义Theme的时候使用:
SytleSheetTheme=来代替直接使用Theme
•
4. 使用MasterPage
如同使用Theme可以格式化整个网站各个控件的显示模式一样,Master Page可以用来定义网站中不同网页的相同部分,例如整个网站都包括同样的格局,同样的页头,同样的页脚,同样的导航栏。这个时候,可以把这些控件定义在一个masterpage上。其他网页只需要继承这个Masterpage即可。
Master page的基本定义和其他页面并没有不同,主要的区别在于,Master page包含一个ContentPlaceHolder ,这个控件定义了一些可以被其他页面继承的区域,该区域内可以被其他页面用来摆放自己的控件。