全局的和应用程序的主题
主题可以应用于应用程序层或机器层(用于所有的应用程序)。应用程序层的主题放置在应用程序根目录下的App_Themes目录中。全局主题放置在ASP.NET安装目录下的ASP.NETClientFiles文件夹下的"Themes"目录中,例如%WINDIR%Microsoft.NETFramework<version>ASP.NETClientFilesThemes。IIS Web站点的全局主题的位置是Inetpubwwwrootaspnet_clientsystem_web<version>Themes。
给页面指定主题
通过把<%@ Page Theme="..." %>指令设置为全局或应用程序层的主题(Themes或App_Themes目录下的文件夹名称),我们可以为单个页面指定主题。一个页面只能应用一个主题,但是该主题中的多个皮肤文件可以用于设置页面上的控件的样式信息。
在配置文件中指定主题
你也可以在Web.config文件的<pages theme="..."/>部分中指定应用在程序的所有页面上的主题。如果需要取消某个特定的页面的主题,需要把该页面指令的主题属性设置为空字符串("")。请注意,母版页不能应用主题;你应该在内容页上或配置文件中设置主题。
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> <pages theme="ExampleTheme"/> </system.web> </configuration> |
禁止某个控件应用主题
你可以通过把控件的EnableTheming属性设置为false,把特定的控件排除出主题的应用范围。
<%@ Page Language="VB" Theme="OrangeTheme" %> …… <asp:Label ID="Label1" runat="server" Text="Hello 1" /><br /> <asp:Label ID="Label2" runat="server" Text="Hello 2" EnableTheming="False" /><br /> |
主题中的命名皮肤(Named Skins)
在默认情况下,皮肤文件中的控件定义会应用到页面上的所有相同类型的控件上。但是,你可能希望应用程序不同部分的同类控件显示为不同的样式。例如,在某个地方你可能希望文本和标签控件用粗体显示,在另一个地方可能希望它用斜体显示。你可以使用主题中的命名皮肤来实现这种功能。 数据挖掘交友
默认皮肤和命名皮肤
你可以通过为控件建立不同的定义,在一个皮肤文件中为同类控件定义多种不同的样式。你可以把这些控件定义的SkinID属性设置为任何名称,接着在需要应用特定皮肤的控件上设置这个SkinID值。如果缺少SkinID属性,就应用默认的皮肤(没有设置SkinID属性的皮肤)。下面的例子演示了应用不同皮肤的标签和日历控件。请注意,页面中带有命名SkinID的控件从默认的皮肤中获取了不同的样式集合。
<%@ Page Language="VB" Theme="OrangeTheme2" %>
<asp:Label ID="Label1" runat="server" Text="Hello 1" /> <asp:Label ID="Label2" runat="server" Text="Hello 2" SkinID="Blue" /> <asp:Label ID="Label3" runat="server" Text="Hello 3" />
<asp:Calendar ID="Calendar1" runat="server"/> <asp:Calendar ID="Calendar2" SkinID="Simple" runat="server"/> |
命名皮肤可以在主题的皮肤文件中用多种方式来组织。由于主题可以包含多个皮肤文件,你可能会把命名皮肤分割到单个文件中,使每个皮肤文件包含相同SkinID的多个控件定义。例如,在一个主题中,你可能拥有三个皮肤文件,它们分别与特定的SkinID值对应:
/WebSite1 /App_Themes /MyTheme Default.skin Red.skin Blue.skin |
你也可以根据控件类型对皮肤文件进行分组,使每个皮肤文件包含特定控件的一组皮肤定义:
/WebSite1 /App_Themes /MyTheme GridView.skin Calendar.skin Label.skin |
你甚至于可以根据站点的不同区域来分割皮肤文件,例如:
/WebSite1 /App_Themes /MyTheme HomePage.skin DataReports.skin Forums.skin |
在一个主题目录下存放多个皮肤文件的能力使你能够灵活地组织它们。它还使你能够轻易地与他人共享皮肤定义,或者把皮肤定义从一个主题复制到另一个主题,而不需要编辑主题中的皮肤文件。
数据挖掘研究院