ASP.NET 2.0:外观文件仅在放置在根主题文件夹下才起作用吗?

时间:2020-03-05 18:54:40  来源:igfitidea点击:

我发现只有将皮肤文件放置在App_Themes文件夹的根主题文件夹中,皮肤文件才能起作用。

例如,如果App_Themes文件夹中有2个主题,则不能将另一个子文件夹添加到主题文件夹中,也不能在该子文件夹中放置单独的外观文件。

并没有太大限制,但是它将为我们提供更大的灵活性来进一步自定义应用程序。

谁能阐明为什么这种行为会像2.0中那样发生?

解决方案

回答

皮肤文件是否应具有扩展名.skin?我总是称它们为theme.skin,并给它们起与文件夹相同的名称。例如在Theme col2中,文件夹为

App_Themes \ col2
并包含css和col2.skin

微软是最佳参考:

回答

ASP.Net中的主题不提供从"子主题"中进行选择的功能。

但是,我们可以在皮肤文件中设置SkinID。例如,在.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遵循以下方式:
http://www.neovolve.com/page/ASPNet-Virtual-Theme-Provider-10.aspx