Я создаю настраиваемый составной элемент управления, основанный на управлении asp: Label. Я бы хотел, чтобы свойства по умолчанию для ярлыков были доступны для скинов, а также дополнительные свойства, которые я добавляю к своему элементу управления.Создание составного элемента управления ASP.NET. Как применить свойства, связанные с SkinID?
Но когда я добавляю определение кожи в файл Default.skin в свой каталог тем и добавляю элемент управления на свою страницу с указанным SkinId, я не могу понять, как получить элемент управления для рендеринга с помощью свойств Skinned.
Дополнительные пункты:
- Мой пользовательский элемент управления определен в отдельной библиотеке/DLL.
- Я добавил одно тестовое свойство и добавил атрибут [Themeable (false)]. Затем я установил это свойство в файле .skin. Я не получал никаких ошибок при попытке просмотреть страницу, поэтому мне кажется, что файл .skin не применяется, или что элемент управления def в файле скина не совпадает с элементом управления def в aspx страница.
Из файла кожи:
<ctrl:ExtendedLabel SkinId="test" runat="server"
Expandable="true" Lookup="true" Required="true"
RequiredCssClass="required" Text="Hello" />
От страницы ASPX:
<ctrl:ExtendedLabel SkinID="test" runat="server"/>
От web.config:
<pages>
<controls>
<add tagPrefix="ctrl" namespace="MyCompany.WebControls"
assembly="MyCompany.Web" />
</controls>
</pages>
Я добавил тестовое свойство контроля , пометили его как [Themeable (false)], чтобы проверить, не получится ли ошибка времени выполнения, когда установив это свойство в файл скина. Нет ошибки.
Обратите внимание, что тег страниц не имеет атрибута styleSheetTheme. Однако у меня есть класс базовой страницы, который переопределяет свойство StyleSheetTheme, которое, похоже, работает на все остальное.
Если я добавлю атрибут styleSheetTheme к тегу страниц в web.config, то работает скин, включая получение ошибки, если я попытаюсь установить свойство non-Themeable.
В чем разница? Как я могу заставить его работать с кодом свойства класса базовой страницы?
Прогуливаясь по всем вышеперечисленным шагам, я обнаружил, что моя тестовая страница не наследуется от базового класса. Doh! Как неловко. Спасибо за контрольный список Chris – slolife