我发现皮肤文件只有放在 App_Themes 文件夹中的根主题文件夹中才能工作。
例如,如果您在 App_Themes 文件夹中有 2 个主题,则不能将另一个子文件夹添加到主题文件夹并在该子文件夹中放置单独的皮肤文件。
这不是一个很大的限制,但它会给你更多的灵活性来进一步定制一个应用程序。
任何人都可以阐明为什么会像在 2.0 中那样发生这种行为吗?
你的皮肤文件应该有扩展名 .skin 吗?我总是称它们为 theme.skin 并给它们与文件夹相同的名称。例如在主题 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