现在这些担忧,都在 Asp.NET 2.0 中得到了完善的解决。首先,您可以通过简单的代码编写实现复杂的功能;其次,Asp.NET 2.0 在处理主题的问题时提供了清晰的目录结构,使得资源文件的层级关系非常清晰,在易于查找和管理的同时,提供的良好的扩展性。
皮肤是应用到一个控件上的样式信息,这些内容保存在.skin文件当中,可以对皮肤用skinID命名,然后控件在使用皮肤时,设置它的skinID属性。如果不设置,则使用其默认值。主题实际上是皮肤的集合,保存在Themes子目录中。主题又分为Global Themes(对web server而言)和Local Themes(对具体的应用页言)。在web.config文件中应用主题
<system.web>
<pages theme="BasicBlue" />
</system.web>
全局主题位于c:\windows\Microsoft.net\2.0\asp.net ClientFiles目录下局部主题位置web应用程序的虚拟根目录下
命名皮肤没有指定SkinID的皮肤为“默认皮肤” 指定SkinID的皮肤即为“命名皮肤” 控件不同皮肤的SkinID必须是不同的。可以在一个文件中,也可以存放在不同文件中。使用控件的SkinID属性指定使用哪种命名皮肤。使用命名皮肤<asp:DropDownList ID="Countries" SkinID="Blue" RunAt="server" /> EnableTheming属性:所有的页面与控件都支持,缺省为 true. <asp:DropDownList ID="Countries" EnableTheming="false" RunAt="server" />
我们说通俗点,你知道动网论坛那个换肤吧?其实啊,他就是通过切换CSS样式表来实现的,但是ASP编写的动网论坛没有用到控件,可我们的.NET好多都是控件,比如说我们的GridView吧,你要对他实现CSS控制那是多困难的事,所以微软也应这个缺点增加了主题,主题说穿了就是控件外观和样式(我们在属性配置节里面看到的那些东西了),所以综上所述,主题和皮肤就是 控件外观文件 和 CSS样式表的综合体,在应用中,他们也被互补的应用.
在使用中要切记一点,两套主题结构应该是一样的,例如,我们A主题中有一个CSS对TD标签定义了,但是B主题中并没有这个标签,那么不好意思,假设你最开始指定这个页的主题为A ,那么即便切换到B ,TD标签仍然会沿用A主题里的TD定义,控件主题也是一样.
他的指定主题有两种方法,一是Theme="" ,另外种是 StylesheetTheme="" ,前面这种有点阴险,当你用他指定了他不会在设计模式下有任何表现,假设你这时候再为已经有主题的控件重新设计个样式的话,那么你这是在浪费表情.
如果使用第二种的话就好点,呵呵,但是第二种又太好欺负了,他总试图去迁就所有,结果闹出很多鬼都不想看到的结果.当然,这些随着设计经验的丰富,都是可以避免的.
还有一个重要的问题,希望能够提醒大家,不要轻易对表格(table,tr,td)这些元素使用CSS元素定义,可以用类定义,因为我们很多复合控件体现出来的都是表格,还记得我们说过的流输出和表格输出吗?
视频下载 地址一 地址二 地址三