有没有办法根据站点使用的主题来使用特定的用户控件?
场景:我在我的 asp.net 项目中使用主题。我将拥有相同的代码库和不同的外观和感觉,因此使用主题和皮肤。现在的问题是,如果我想根据站点的类型使用不同的页眉和页脚(它们是用户控件),我们如何在主题的帮助下做到这一点。
有没有办法根据站点使用的主题来使用特定的用户控件?
场景:我在我的 asp.net 项目中使用主题。我将拥有相同的代码库和不同的外观和感觉,因此使用主题和皮肤。现在的问题是,如果我想根据站点的类型使用不同的页眉和页脚(它们是用户控件),我们如何在主题的帮助下做到这一点。
是的,可以使用主题修改控件层次结构。
这可以通过Themeable 的ITemplate属性实现。
例如,如果您有一个自定义控件,该控件仅具有可主题化的Contents属性,您可以说:
<custom:MyThemeableControl runat="server">
<Contents>
... any valid *.skin markup here
</Contents>
</custom:MyThemeableControl>
现在您可以将 Contents 中的控件换成不同的主题,如下所示 - 对于ThemeA,您将拥有以下皮肤:
<custom:MyThemeableControl runat="server">
<Contents>
<asp:Button runnat="server" />
</Contents>
</custom:MyThemeableControl>
对于ThemeB,您将拥有以下皮肤:
<custom:MyThemeableControl runat="server">
<Contents>
<asp:TextBox runnat="server" />
</Contents>
</custom:MyThemeableControl>
然后此页面将在ThemeA下呈现一个Button ,在ThemeB下呈现一个TextBox:
<@Page Theme="ThemeA">
<custom:MyThemeableControl runat="server" />
<@Page Theme="ThemeB">
<custom:MyThemeableControl runat="server" />