ASP.NET 2.0:皮肤文件仅在放置在根主题文件夹中时有效?

ASP.NET 2.0:皮肤文件仅在放置在根主题文件夹中时有效?,asp.net,themes,Asp.net,Themes,我发现皮肤文件只有放在App_Themes文件夹的根主题文件夹中才能工作 例如,如果在App_themes文件夹中有2个主题,则无法将另一个子文件夹添加到主题文件夹中,并在该子文件夹中放置单独的皮肤文件 这并没有太大的限制,但它会给你更多的灵活性来进一步定制应用程序 有人能解释为什么会出现2.0中的这种行为吗?您的皮肤文件应该有扩展名.skin吗?我总是称它们为theme.skin,并给它们与文件夹相同的名称。例如,在主题col2中,文件夹是 应用程序\u主题\col2 并包含css和col2.

我发现皮肤文件只有放在App_Themes文件夹的根主题文件夹中才能工作

例如,如果在App_themes文件夹中有2个主题,则无法将另一个子文件夹添加到主题文件夹中,并在该子文件夹中放置单独的皮肤文件

这并没有太大的限制,但它会给你更多的灵活性来进一步定制应用程序


有人能解释为什么会出现2.0中的这种行为吗?

您的皮肤文件应该有扩展名.skin吗?我总是称它们为theme.skin,并给它们与文件夹相同的名称。例如,在主题col2中,文件夹是

应用程序\u主题\col2 并包含css和col2.skin


是您的最佳参考:ASP.Net中的主题不提供从“子主题”中选择的功能

但是,您可以在皮肤文件中设置皮肤ID。例如,在.skin中:

<asp:DataList runat="server" SkinID="DataListColor" Width="100%">
  <ItemStyle BackColor="Blue" ForeColor="Red" />
</asp:DataList>

<asp:DataList runat="server" SkinID="DataListSmall" Width="50%">
</asp:DataList>


然后,当您想调用其中一个时,只需指定数据列表所需的SkinID。

更改此行为的唯一方法是通过一个VirtualPathProvider-大致如下: