Тематический пользовательский контроль asp.net - PullRequest
0 голосов
/ 04 марта 2009

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

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

1 Ответ

0 голосов
/ 08 января 2010

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

Это стало возможным благодаря 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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...