Книга: C# для профессионалов. Том II

Специальные элементы управления

Специальные элементы управления

Специальные элементы управления — следующий шаг по сравнению с элементами управления пользователя в том смысле, что они являются полностью самодостаточными в сборках C#, не требуя отдельного кода ASP.NET. Это означает, что нам не нужно проходить через процесс сборки UI в файле .ascx. Вместо этого мы имеем полный контроль над тем, что записывается в поток вывода, то есть, над кодом HTML, созданным элементом управления.

Обычно для разработки специального элемента управления требуется больше времени, чем для элемента управления пользователя, так как синтаксис является более сложным и часто требуется написать значительно больший код, чтобы получить результат. Элемент управления пользователя, как мы видели, может просто объединять несколько других элементов управления, в то время как специальный элемент управления может делать практически что угодно.

Чтобы получить наиболее гибкое поведение специальных элементов управления, можно выводить класс из System.Web.UI.WebControls.WebControl. В этом случае создается полный специальный элемент управления. Иначе можно расширить функциональность существующего элемента управления, создавая производный специальный элемент управления. Наконец, можно сгруппировать существующие элементы управления почти так, как это делалось в предыдущем разделе, но с более логичной структурой, чтобы создать композитный специальный элемент управления:

Любой из этих элементов может использоваться на страницах ASP.NET одинаково. Необходимо только поместить созданную сборку в каталог bin приложения Web, которое будет его использовать, и зарегистрировать имена используемых элементов с помощью директивы <%@ Register %>. В этой директиве применяется немного другой синтаксис для специальных элементов управления:

<%@ Register TagPrefix="PCS" Namespace="PCSCustomWebControls" Assembly="PCSCustomWebControls" %>

Мы используем параметр TagPrefix таким же образом, как и раньше, но не используем атрибуты TagName или Src. Это связано с тем, что сборка специального элемента управления может содержать несколько специальных элементов управления, и каждый из них будет именован согласно своему классу, поэтому TagName является лишним. Кроме того, так как сборка находится в каталоге bin, мы можем использовать средства платформы .NET для динамического обнаружения требуемой сборки просто по имени и пространству имен в ней, которое содержит элементы управления.

Выше, в примере строки кода, мы говорим, что хотим использовать сборку с именем PCSCustomWebControls.dll с элементами управления в пространстве имен PCSCustomWebControls, и при этом используем префикс PCS. Если в этом пространстве имен имеется элемент управления с именем Control1, то можно использовать его с кодом ASP.NET:

<PCS:Control1 Runat="server" />

С помощью специальных элементов управления можно также воспроизвести некоторое вложенное поведение элементов управления, такое, как мы видим в списке элементов управления:

<asp:dropdownlist runat="server" width="160px">
 <asp:ListItem Value="1">The Happy Room</asp:ListItem>
 <asp:ListItem Value="2">The Angry Room</asp:ListItem>
 <asp:ListItem Value="3">The Depressing Room</asp:ListItem>
 <asp:ListItem Value="4">The Funked Out Room</asp:ListItem>
</asp:dropdownlist>

Можно создать очень похожим образом элементы управления, которые интерпретируются как потомки других элементов управления. Позже в этой главе мы увидим, как это делается.

Оглавление книги


Генерация: 1.596. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз