Типы серверных элементов управления

186

Серверные элементы управления ASP.NET являются неотъемлемой частью архитектуры ASP.NET. По сути, серверные элементы управления представляют собой классы в среде .NET Framework, представляющие визуальные элементы веб-формы. Некоторые из этих классов являются относительно простыми и отображаются на определенные HTML-дескрипторы. Другие элементы управления намного более абстрактны и реализуют более сложное представление нескольких элементов HTML.

ASP.NET предлагает множество серверных элементов управления, которые делятся на несколько категорий:

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

Это классы, в которых содержатся стандартные HTML-элементы. За исключением атрибута runat="server" объявление серверных элементов управления HTML ничем не отличается от объявления других элементов управления. Двумя наиболее яркими представителями серверных элементов управления являются HtmlAnchor (представляющий дескриптор <а>) и HtmlSelect (представляющий дескриптор <select>).

Однако в принципе в серверный элемент управления может быть преобразован любой дескриптор. Если соответствующего напрямую класса нет, ASP.NET будет просто использовать класс HtmlGenericControl. Чтобы преобразовать обычный элемент HTML в серверный элемент управления, нужно всего лишь добавить к дескриптору этого элемента атрибут runat="server".

Веб-элементы управления

Эти классы дублируют функции базовых HTML-элементов, но обладают более согласованным и значащим набором свойств и методов, которые упрощают их объявление и доступ к ним. В качестве примеров можно назвать элементы управления HyperLink, ListBox и Button. Более того, несколько других типов элементов управления ASP.NET (такие как многофункциональные элементы управления и элементы управления проверкой достоверности) часто считаются особыми типами веб-элементов управления. В Visual Studio вы найдете базовые элементы управления на вкладке Standard (Стандартные) в окне Toolbox (Панель инструментов).

Многофункциональные элементы управления

Эти усовершенствованные элементы управления могут генерировать большой объем HTML-разметки и даже клиентский JavaScript-код для создания интерфейса. В качестве примеров можно назвать элементы управления Calendar, AdRotator и TreeView. В Visual Studio многие многофункциональные элементы управления доступны на вкладке Standard (Стандартные) в окне Toolbox.

Элементы управления проверкой достоверности

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

Если проверка достоверности не проходит, вы можете предотвратить обработку страницы или позволить этим элементам управления отображать сообщения об ошибках на странице. В Visual Studio эти элементы управления можно найти на вкладке Validation (Проверка достоверности) в окне Toolbox.

Элементы управления данными

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

Элементы управления навигацией

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

Элементы управления входом в систему

Эти элементы управления поддерживают аутентификацию с помощью форм, модель ASP.NET для аутентификации пользователей по базе данных и отслеживания их состояния. Вместо написания собственных интерфейсов для работы с аутентификацией с помощью форм вы можете применять эти элементы управления для работы с настраиваемыми страницами входа в систему, восстановления паролей и мастеров создания новых пользователей.

Элементы управления Web Parts

Этот набор элементов управления поддерживает Web Parts — модель ASP NET для построения компонентных, легко конфигурируемых веб-порталов.

Элементы управления ASP.NET AJAX

Эти элементы управления позволяют использовать в веб-страницах приемы Ajax без написания клиентского кода. Страницы в стиле Ajax могут быть более быстродействующими, поскольку исключают прохождение стандартного цикла обратной отправки и обновления страницы.

Элементы управления ASP.NET Dynamic Data

Эти элементы управления поддерживают компонент ASP.NET Dynamic Data, который позволяет создавать управляемые данными веб-сайты за счет построения гибких шаблонов, а не написания утомительного кода.

Иерархия серверных элементов управления

Все серверные элементы управления унаследованы от базового класса Control из пространства имен System.Web.UI. Это верно при использовании серверных элементов управления HTML, применении веб-элементов управления или создании собственных специальных элементов управления. Это также относится к классу Page, от которого происходят все формы.

На рисунке ниже показаны основные ветви этой цепочки наследования:

Наследование серверных элементов управления

Поскольку все элементы управления происходят от базового класса Control, у вас имеется базовый общий знаменатель, который можно использовать для манипулирования элементом управления на странице, даже если определенный тип элемента управления неизвестен. (Например, этот прием можно применять для циклического прохода по всем элементам управления страницы и сокрытия каждого из них установкой свойства Visible равным false.) В следующей таблице перечислены наиболее часто используемые члены класса Control:

Свойства и методы класса Control
Свойство или метод Описание
ClientID Возвращает идентификатор элемента, который является уникальным именем, созданным ASP.NET при построении экземпляра страницы
Controls Возвращает коллекцию дочерних элементов управления. Коллекция Page.Controls может применяться для извлечения высокоуровневой коллекции элементов управления на странице. Каждый элемент управления в коллекции Controls может содержать собственные дочерние элементы управления, которые, в свою очередь, могут содержать еще какие-то элементы управления, и т.д.
EnableViewState Возвращает или устанавливает булевское значение, указывающее на то, должен ли элемент управления поддерживать свое состояние с помощью обратных отправок родительской страницы. По умолчанию имеет значение true
ID Возвращает или устанавливает идентификатор элемента управления. На практике это имя, с помощью которого вы можете получить доступ к элементу управления из серверных сценариев или класса отделенного кода
Page Возвращает ссылку на объект страницы, в которой содержится элемент управления
Parent Возвращает ссылку на родителя элемента управления, которым может быть страница или другой контейнерный элемент управления
Visible Возвращает или устанавливает булевское значение, указывающее на то, нужно ли генерировать элемент управления. Если равно false, то элемент управления не просто делается невидимым для клиента, но даже не генерируется соответствующий HTML-дескриптор
DataBind() Связывает элемент управления и все дочерние элементы управления с определенным источником данных или выражением
FindControl() Ищет дочерний элемент управления с определенным именем в текущем элементе управления и всех содержащихся в нем элементах. Если дочерний элемент найден, метод возвращает ссылку на общий тип Control, который затем можно привести к соответствующему типу
HasControls() Возвращает булевское значение, указывающее на наличие у элемента управления дочерних элементов управления. Чтобы содержать дочерние элементы, элемент управления должен быть дескриптором контейнера (например, <div>)
RenderControl() Записывает вывод HTML для элемента управления на основе его текущего состояния. Этот метод не вызывается напрямую; вместо этого ASP.NET вызывает его при генерации страницы
Пройди тесты
Лучший чат для C# программистов