主题一旦指明后,皮肤与CSS文件就与那个页面相连。此时,你就可以为具有不止一个有效定义的控件指定一个skinid属性;如果没有必要,也可以将其忽略。列表C中的网页应用的是在样本皮肤文件中定义的控件。
在页面级别指定主题是件痛苦的事情,在有数百个页面时更是如此。你也可在应用软件的web.config文件中指定主题。页面元素(位于system.web元素中)包含一个主题属性,它为网站指定默认的主题。
<pages theme="TechRepublicTest" />
这样就不必设置页面级主题属性;但你仍可以用它来代替web.config文件中定义的默认主题。
不要混淆主题与CSS
尽管主题与皮肤在很多方面与CSS相似,它们并不一样。主题能够控制一个网络控件的视觉呈现,包括为DataGrid或TreeView控件中的图片指定模板布局。主题与CSS的另一主要不同之处在于:主题中没有层叠。但是,主题中可以包含样式表。而且,主题的特性值总是代替本地特性值。
单一化与个别化
长期以来,开发社区一直强烈要求公开由主题与皮肤提供的功能,感谢ASP.NET 2.0做到这一点。虽然CSS提供许多格式化的选项,主题则更进一步,其中可以应用CSS文件。下周我们将继续讨论主题与母版页面,说明如何用它们来控制网站。
Tony Patton拥有丰富的、VB、Lotus及XML方面的知识,是一个专业的应用程序开发人员。
列表A
<asp:Label runat="server" BackColor="Red" ForeColor="White" skinid="redlabel" /> |
列表B
<asp:Label runat="server" style="color: yellow; background: black;" skinid="csslabel" /> |
列表C
<%@ Page Language="" Theme="TechRepublicTest" %> |