命名皮肤可以在主题的皮肤文件中用多种方式来组织由于主题可以包含多个皮肤文件你可能会把命名皮肤分割到单个文件中使每个皮肤文件包含相同SkinID的多个控件定义例如在一个主题中你可能拥有三个皮肤文件它们分别与特定的SkinID值对应
/WebSite
/App_Themes
/MyTheme
Defaultskin
Redskin
Blueskin
你也可以根据控件类型对皮肤文件进行分组使每个皮肤文件包含特定控件的一组皮肤定义
/WebSite
/App_Themes
/MyTheme
GridViewskin
Calendarskin
Labelskin
你甚至于可以根据站点的不同区域来分割皮肤文件例如
/WebSite
/App_Themes
/MyTheme
HomePageskin
DataReportsskin
Forumsskin
在一个主题目录下存放多个皮肤文件的能力使你能够灵活地组织它们它还使你能够轻易地与他人共享皮肤定义或者把皮肤定义从一个主题复制到另一个主题而不需要编辑主题中的皮肤文件
使用主题的服务器端样式
主题是在应用程序建立之后甚至于在站点寄宿在生产服务器之后才应用到程序上的给程序应用主题的人可能是该应用程序的开发人员例如让应用程序的开发人员和网站设计人员一起处理站点的外观是很常见的在主题应用到程序上之后主题定义中的样式属性会重载应用程序页面中的目标控件的属性值
另一方面开发者独立地构建样式信息也很常见例如在独立的文件中使用级联样式表(CSS)来定义控件和标记样式在这种情况下你也可以使用主题把主题当作是一种服务器端的样式表通过这种方式应用样式表的时候主题定义中的样式属性会设置应用程序中的控件的默认值但是可以通过其它操作来重新设置页面中的控件的这些值从而重载了主题定义
宣告式的服务器端样式
当我们通过在@Page指令或配置文件的<pages/>段中设置Theme属性来应用主题的时候主题中的皮肤的属性将会重载页面中目标控件的相同属性下面的例子演示了页面中的一个标签控件它的ForeColor被设置为蓝色在应用的主题中标签皮肤把ForeColor属性设置为橙色当你运行页面的时候请注意主题定义重载了本地控件属性所有的标签都显示为橙色
<%@ Page Language=VB Theme=OrangeTheme %>
<asp:Label ID=Label runat=server Text=Hello /><br />
<asp:Label ID=Label runat=server Text=Hello ForeColor=blue />
[] [] [] [] [] [] [] [] []