Тематический пользовательский контроль 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" />