Тематический пользовательский контроль asp.net

Есть ли способ использовать определенный пользовательский контроль в зависимости от того, какую тему использует сайт?

Сценарий: я использую темы в своем проекте asp.net. У меня будет та же кодовая база и другой внешний вид, и поэтому с использованием тем и скинов. Теперь проблема в том, что если я хочу иметь разные верхние и нижние колонтитулы (которые являются пользовательскими) в зависимости от типа сайта, как мы можем это сделать с помощью тем.

1 ответ

Да, иерархии управления могут быть изменены с темами.

Это стало возможным благодаря свойствам ITemplate, которые являются Themeable.

Если, например, у вас есть пользовательский элемент управления, который просто имеет свойство 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 и TextBox под ThemeB:

<@Page Theme="ThemeA">
<custom:MyThemeableControl runat="server" />

<@Page Theme="ThemeB">
<custom:MyThemeableControl runat="server" />
Другие вопросы по тегам