主题和皮肤-皮肤

作者:vkvi 来源:ITPOW(原创) 日期:2007-11-13

先讲皮肤便于更好地理解主题的应用。

  • 在站点的 App_Themes 下创建一个文件夹,比如:BlueSky,用于存储这一个主题的资源。
  • 然后再在 BlueSky 中加入一个皮肤文件,比如:SkinFile.skin。

SkinFile.skin 内容如下:

<asp:ListBox runat="server" width="100"></asp:Listbox>
<asp:ListBox runat="server" SkinId="lb" width="200"></asp:Listbox>

可以看到皮肤文件的内容和 .aspx 文件中的控件内容差不多,实际上控件在这里除了 ID 属性,其它大多数属性都可以使用。注意,runat="server" 不能少。

  • 可以看到第二行代码比第一行代码多了一个 SkinId="lb",也就是说第一行作用于所有的 ListBox(第一行为 ListBox 的默认皮肤),而第二行只作用于指定了 SkinId 为 lb 的 ListBox。
  • SkinId 必须唯一吗?只是在同一类控件中必须唯一,比如皮肤文件中一个 ListBox 的 SkinId 为 lb,一个 GridView 的 SkinId 也可以为 Id。
  • 皮肤文件的文件名称并不重要,因为引用时只需要指定主题文件夹名称,比如这里的 BlueSky,而不需要指定皮肤文件的文件名,ASP.NET 会自动查找皮肤文件。
  • 允许一个主题中有多个皮肤文件,但各个皮肤文件中的内容不应该冲突,比如皮肤文件 A 指定了 ListBox 的默认皮肤,该主题中的其它皮肤文件就不能再为 Listbox 指定默认皮肤了。
  • 由于控件的大多数属性都可以在皮肤文件中使用,所以功能就比样式表强大了,比如 <asp:Image runat="server" SkinId="go" ImageUrl="~/App_Themes/BlueSky/images/go.gif" /> 就指定了图片的地址,而样式表只能指定背景图片地址。

相关阅读

相关文章