Из всех известных серверных языков ASP.NET определенно имеет худшую репутацию среди дизайнеров. Многие элементы управления в ASP.NET опираются на структуры таблиц, встроенные стили и различные другие вещи, которые усложняют жизнь веб-дизайнера. Чтобы облегчить это в ASP.NET 2.0, Microsoft представила новую систему тем. К сожалению, единственное, что вы действительно могли сделать с этими темами, это изменить имена классов, назначенные структурам таблиц.
К счастью, в ASP.NET есть отличная функция, называемая адаптерами управления, которая позволяет разработчикам иметь больше контроля над разметкой, создаваемой элементами управления. Фактически, несколько месяцев назад Microsoft выпустила полный набор готовых CSS-дружественных управляющих адаптеров . Эти предварительно собранные адаптеры — отличный способ очистить разметку многих серверных элементов управления ASP.NET, но они могут не соответствовать вашим требованиям. Этот пост проливает некоторый свет на процесс создания собственных адаптеров управления.
Прежде чем углубляться в этот процесс, вы должны загрузить и протестировать набор адаптеров, дружественных к CSS; они обеспечивают хорошую ссылку при создании ваших собственных адаптеров.
Основная цель использования адаптеров управления — изменить способ отображения встроенных элементов управления. Для использования этих адаптеров требуется 2 вещи: класс адаптера и файл определения браузера. Класс адаптера определяет способ визуализации элемента управления, а файл определения браузера определяет, какие браузеры или агенты должны использовать адаптеры.
Класс адаптера используется для переопределения функций рендеринга исходного элемента управления. Класс должен наследовать соответствующий адаптер из пространства имен WebControls.Adapaters (например, адаптер для элементов управления меню будет наследовать WebControls.Adapters.MenuAdapter). Базовый класс адаптера содержит функции рендеринга, которые вы будете переопределять в вашем адаптере управления. Вам также следует создать свойство, которое содержит экземпляр класса WebControlAdapterExtender. Класс extender избавит вас от написания большого количества кода и поможет убедиться, что ваши адаптированные элементы управления по-прежнему функционируют правильно.
Основными функциями, с которыми вы будете работать, являются RenderBeginTag, RenderEndTag и RenderContents. Если у вас есть доступ к любому javascript, вы также можете использовать функцию RegisterScripts, чтобы добавить их в заголовок.
RenderBeginTag и RenderEndTag могут быть созданы с использованием расширителя. Расширитель создаст div с идентификатором, который может распознать ваш код и другие элементы управления. Функция RenderContents — это то место, где вы будете генерировать свою разметку. Вы можете получить доступ к любым свойствам серверного элемента управления, отображаемым через свойство Control, и использовать параметр writer для вывода разметки. Класс MenuAdapter в дружественных к CSS адаптерах является хорошим примером того, как визуализировать содержимое элемента управления. Он читает свойство Items меню и использует пару функций для отображения неупорядоченного списка или элемента списка.
Функция RegisterScripts используется для прикрепления любых файлов JavaScript, которые могут вам понадобиться. Преимущество использования RegisterScripts заключается в том, что он поместит тег script для вашего файла javascript в заголовок страницы, а не в тело. Это также предотвратит многократное обращение к одному и тому же файлу. Если по какой-то причине вам нужно разместить javascript в теле, что обычно плохо, вы можете отобразить его в функции RenderContents.
Надеемся, что эта статья проливает немного света на то, как использовать управляющие адаптеры для ваших приложений ASP.NET. Эти адаптеры определенно помогут вам сделать сайт более совместимым со стандартами и порадуют ваших дизайнеров.