Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Событие Unload




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

Заметим, что уведомление о выгрузке страницы или элемента управления из памяти поступает непосредственно перед выполнением этой операции, поэтому, пока происходит его обработка, объект еще не удален. Для освобождения памяти, занимаемой объектом страницы, её процессор вызывает метод Dispose(). Это происходит сразу после того, как завершится выполнение всех рекурсивно вызванных обработчиков события Unload. Переопределение метода Dispose() класса Page или обработка события Disposed страницы, даёт последнюю возможность выполнить для неё действия по освобождению ресурсов, пока она сама не будет удалена из памяти.

5.7. ОБЩИЙ ОБЗОР СЕРВЕРНЫХ ЭЛЕМЕНТОВ УПРАВЛЕНИЯ

Важным элементом технологии ASP.NET являются серверные элементы управления (server controls). Серверный элемент управления – это некий класс, объект которого агрегирован в страницу. При выполнении рендеринга страницы серверный элемент транслируется в один или несколько HTML-тэгов.

Библиотека серверных элементов насчитывает порядка сотни классов. Условно все элементы можно разделить на следующие группы:

1. Элементы управления HTML – эквиваленты обычных HTML-тэгов. Имеют атрибуты, сходные с атрибутами HTML-тэгов.

2. Элементы управления Web – набор элементов, равнозначный обычным HTML-элементам, но обладающих расширенным набором свойств и событий, облегчающий создание страницы.

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

4. Элементы управления для представления данных – обеспечивают различные способы представления данных, хранящихся как в локальных коллекциях, так и в базах данных.

5. Навигационные элементы управления – группа элементов для навигации по сайту (например, реализация меню сайта).

6. Элементы управления Login – элементы для работы с пользователями сайта ‑ регистрация, вход, управление паролями и ролями.

7. Элементы управления Web Parts – специфические элементы управления для реализации технологии Web Parts.

8. Элементы управления AJAX Extensions –элементы управления для технологии AJAX (введены в ASP.NET 3.5).

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

<asp:Button ID="btnSend" runat="server" Text="Send" />

При задании серверного элемента на странице используется соответствующий тэг с обязательным атрибутом runat="server".

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

<asp:Label ID="lblExamlpe" runat="server">

This is a label content

</asp:Label>

Абсолютно все серверные элементы управления являются наследниками класса System.Web.UI.Control. Рассмотрим свойства, методы и события данного класса. Свойства класса Control приведены в табл. 13.

Таблица 13

Свойства класса Control

Имя свойства Описание
BindingContainer Элемент управления, который является логическим родителем текущего элемента в контексте связывания с данными «
ClientID Идентификатор, который будет присвоен элементу управления в HTML-странице. Является измененной версией свойства UniqueID: символы знак доллара ($) в UniqueID заменяются символом подчеркивания (_) в ClientID
Controls Коллекция ссылок на все дочерние элементы управления
EnableTheming Указывает, применяются ли к элементу управления темы «
EnableViewState Указывает, должен ли элемент сохранять между запросами состояние представления (свое и своих дочерних элементов)
ID Имя, которое будет использоваться для программной идентификации элемента управления в коде страницы
NamingContainer Контейнер именования элемента управления. Контейнером именования элемента является его родительский элемент, реализующий интерфейс INamingContainer. Если такого элемента не существует, контейнером именования является страница
Page Страница, содержащая элемент управления
Parent Родительский элемент данного элемента управления согласно иерархии элементов страницы
Site Контейнер, в котором содержится текущий элемент управления, когда он выводится на рабочей поверхности дизайнера. Используется в дизайнере Visual Studio
SkinID Имя обложки, применяемой к элементу управления «
TemplateControl Шаблон, содержащий текущий элемент управления «
TemplateSourceDirectory Имя виртуального каталога хост-страницы
UniqueID Иерархически уточненный идентификатор элемента
Visible Указывает и позволяет определить, должна ли ASP.NET осуществлять рендеринг элемента управления

В табл. 14 приведено описанием методов класса Control.

Таблица 14

Методы класса Control

Имя метода Описание
ApplyStyleSheetSkin() Применяет к элементу управления свойства, определенные в таблице стилей страницы. Какая именно обложка используется, зависит от значения свойства SkinID «
DataBind() Генерирует событие DataBinding, после чего вызывает для всех дочерних элементов управления метод DataBind()
Dispose() Предоставляет элементу управления возможность выполнить задачи очистки, прежде чем тот будет удален из памяти
Focus() Присваивает элементу управления фокус ввода «
FindControl() Ищет заданный элемент управления в коллекции дочерних эле­ментов
HasControls() Указывает, имеет ли элемент управления дочерние элементы
RenderControl() Генерирует для элемента управления вывод HTML
ResolveClientUrl() Служит для получения URL, который может использоваться клиентом для доступа к ресурсам веб-сервера, таким как файлы изображений, дополнительные страницы и т. д.
ResolveUrl() Разрешает относительный URL, возвращая абсолютный на основе значения свойства TemplateSourceDirectory

Класс Control определяет набор базовых событий, поддерживаемых всеми серверными элементами управления. Эти события описаны в табл. 15.

Таблица 15

События класса Control

Событие Когда происходит
DataBinding Для элемента управления вызван метод DataBind() и производится связывание этого элемента с источником данных
Disposed Элемент управления удаляется из памяти (это последний этап его жизненного цикла)
Init Элемент управления инициализируется
Load Элемент управления загружается в память. Данное событие происходит после события Init
PreRender Элемент управления готов к рендерингу своего содержимого
Unload Элемент управления выгружается из памяти

Начиная с ASP.NET 2.0 можно декларативно присвоить всем свойствам элемента управления значения, специфичные для конкретных браузеров. Вот небольшой пример разметки:

<asp:Button ID="btn" runat="server" Text="A button"

ie:Text="IE Button" mozilla:Text="Firefox Button" />

Свойство Text кнопки содержит значение "IE Button", когда страница выводится в Internet Explorer, и значение "Firefox Button", когда она выводится в Firefox. Если страницу запрашивает другой браузер, используется атрибут Text без префикса. Все свойства, которые разрешается задавать в составе тэга, можно помечать идентификатором браузера[9]. ASP.NET 2.0 поддерживает адаптивный рендеринг, то есть процесс генерирования разметки, производимый с учетом особенностей целевого браузера. Для поддержки адаптивного рендеринга задача генерирования разметки делегирована внешнему по отношению к элементу управления компоненту ‑ адаптеру. Выбор адаптера определяется возможностями целевого браузера, сведения о которых извлекаются из базы данных браузеров ASP.NET. Если запись об определенном браузере содержит имя класса адаптера элемента управления, создается и используется экземпляр этого класса. В противном случае адаптером элемента управления становится экземпляр класса ControlAdapter ‑ универсальный адаптер.

В ASP.NET 2.0 наряду с поддержкой состояния представления каждый элемент управления поддерживает состояние элемента управления (Control State). Оба состояния преследуют схожие цели – сохранение информации элемента между запросами. Основное отличие ‑ состояние элемента управления нельзя отключить программно или декларативно (т. е. оно всегда включено). Каждый элемент управления сохраняет и загружает свое состояние, используя пару виртуальных методов SaveControlState() и LoadControlState(). Состояние элемента управления используется подобно состоянию представления, сохраняется и загружается на тех же этапах, что и состояние представления, и содержится в том же скрытом поле.

5.8. ЭЛЕМЕНТЫ УПРАВЛЕНИЯ HTML

ASP.NET содержит набор элементов управления, близко соответствующий обычным элементам HTML. В коде разметки страницы серверные элементы управления HTML выглядят как обычные HTML-теги, но с атрибутом runat="server". Серверные элементы HTML определены для большинства тэгов, таких как <form>, <input>, <select>, <table>, <img>, <a>. Все они наследуются от одного класса – HtmlControl (пространство имен System.Web.UI.HtmlControls), производного от класса Control. Уникальные свойства класса HtmlControl описаны в табл. 16.

Таблица 16

Свойства класса HtmlControl

Свойство Описание
Attributes Коллекция всех атрибутов элемента управления и их значений
Disabled Булево значение, указывающее, отключен ли элемент управления
Style Коллекция, представляющая все CSS-свойства элемента управления
TagName Возвращает имя HTML-тэга элемента управления

Коллекцию Attributes можно использовать для установки таких HTML-атрибутов, которым не соответствуют специализированные свойства элемента управления. Содержимое коллекции заносится в HTML-вывод как набор пар «атрибут=значение». Например, в следующем коде устанавливается значение атрибута onload HTML-тега <body>.

<script>

function Init() { alert("Hello"); }

</script>

 

<script runat="server" language="C#">

protected void Page_Load(object sender, EventArgs e)

{

theBody.Attributes["onload"] = "Init()";

}

</script>

 

<html>

<body ID ="theBody" runat="server" />

</html>

На рис. 1 показано дерево доступных элементов управления HTML.

 

Рис. 1. Дерево элементов управления HTML

Большинство элементов управления HTML можно разделить на две категории: контейнерные и предназначенные для ввода данных. Контейнерные элементы управления HTML перечислены в табл. 17.

Таблица 17

Контейнерные элементы управления HTML

Класс Что представляет
HtmlAnchor Якорь HTML, тэг <a>
HtmlButton Тэг <button>, который определен в спецификации HTML 4.0
HtmlForm Тэг <form>. Может использоваться только в качестве контейнера интерактивных серверных элементов управления, но не пригоден для создания HTML-форм, программируемых на сервере
HtmlGenericControl HTML-тэг, для которого в ASP.NET не определен специальный класс. Примерами являются тэги <font>, <hr>, <iframe>. Их программируют с использованием коллекции Attributes
HtmlHead Тэг <head>. Позволяет программно управлять метатэгами, таблицами стилей и заголовком страницы «
HtmlSelect Тэг <select>, то есть группу вариантов выбора
HtmlTable Таблицу HTML ‑ тэг <table>
HtmlTableCell Тэг <td>, то есть ячейку таблицы
HtmlTableRow Тэг <tr>, то есть строку таблицы
HtmlTextArea Многострочное текстовое поле ‑ тэг <textarea>

Базовым классом контейнерных элементов управления HTML является класс HtmlContainerControl. Он представляет все элементы, которые должны иметь закрывающийся тэг: формы, блоки выбора, таблицы, а также якоря и текстовые области. По сравнению с классом HtmlControl контейнерный элемент управления имеет два дополнительных строковых свойства ‑ InnerHtml и InnerText. Оба свойства управляют чтением и записью литерального контента, расположенного между открывающим и закрывающим тэгами элемента[10].

Обсудим некоторые возможности контейнерных элементов. Для страницы, содержащей тэг <head> с атрибутом runat="server", автоматически создается элемент управления HtmlHead, определяющий заголовок страницы. Заголовок страницы представлен новым свойством Header класса Page. Если тэг <head> отсутствует или не имеет атрибута runat="server", данное свойство содержит null. Элемент управления HtmlHead имеет свойство Title, посредством которого можно извлекать и задавать заголовок страницы.

Якорный элемент управления HtmlAnchor и элемент управления HtmlButton могут использоваться не только для перехода к другой странице (что является их основным назначением), но и для осуществления возврата формы. Они обладают серверным событием ServerClick. Вы можете определить имена методов, которые будут обрабатывать на сервере и клиенте событие, вызванное тем, что пользователь щелкнул элемент управления. Ниже продемонстрировано объявление якоря, в котором событию-щелчку назначены и клиентский, и серверный обработчики. Атрибутом onclick определяется клиентский обработчик, написанный на JavaScript, а атрибутом onserverclick ‑ серверный обработчик, код которого будет выполнен после возврата формы.

<а runat="server" onclick="Run()" onserverclick="DoSome">Click</a>

Элемент управления HtmlSelect представляет список опций, из которых можно выбрать одну или несколько. Этот элемент поддерживает связывание с источником данных (будет рассмотрено позднее). Его поведением управляют свойства Size (количество опций) и Multiple (разрешен ли выбор нескольких опций). Сами элементы-опции хранятся в коллекции Items, состоящей из объектов ListItem. Чтобы задать текст элементов, можно либо установить свойство Text каждого из объектов ListItem, либо разместить между открывающимся и закрывающимся тэгами <select> группу тэгов <option>.

В ASP.NET простейшую таблицу HTML можно вывести с помощью элемента управления HtmlTable. Но серверные таблицы не столь мощны, как обычные таблицы HTML, создаваемые с использованием тэга <table>. Главное их ограничение: HtmlTable не поддерживает тэги <caption>, <col>, <colgroup>, <tbody>, <thead> и <tfoot>. Дочерними элементами HtmlTable по определению могут быть только объекты класса HtmlTableRow[11].

Элемент управления HtmlTextArea, соответствующий тэгу <textarea>, позволяет программно создавать и конфигурировать многострочные текстовые поля. У класса HtmlTextArea имеются свойства Rows и Cols, с помощью которых задаётся количество строк и столбцов поля, а свойство Value может использоваться для определения выводимого в нем текста. При возврате формы класс HtmlTextArea генерирует событие ServerChange, которое позволяет проверить на сервере данные, содержащиеся в элементе управления.

В языке HTML элемент <input> имеет несколько разновидностей и может использоваться для вывода кнопки типа submit, флажка или текстового поля. Каждой из таких разновидностей элемента <input> соответствует свой класс ASP.NET. Все эти классы являются производными от HtmlInputControl ‑ абстрактного класса, определяющего их общий программный интерфейс. Данный класс наследуется от HtmlControl, добавляя к нему свойства Name, Туре и Value. Свойство Name возвращает имя, присвоенное элементу управления. Свойство Туре, соответствующее атрибуту type HTML-элемента, доступно только для чтения. Что касается свойства Value, представляющего содержимое поля ввода, то его значение можно и считывать, и записывать.

В табл. 18 перечислены элементы управления ASP.NET, соответствующие различным разновидностям тэга <input>.

Таблица 18

Элементы управления HTML, предназначенные для ввода данных

Класс Что представляет
HtmlInputButton Различные виды кнопок, поддерживаемые HTML. Допустимыми значениями атрибута Туре являются button, submit и reset
HtmlInputCheckBox Флажок HTML, то есть тэг <input> типа checkbox
HtmlInputFile Загрузчик файлов ‑ тэг <input> типа file
HtmlInputHidden Скрытый буфер текстовых данных ‑ тэг <input> типа hidden
HtmlInputImage Графическая кнопка ‑ тэг <input> типа image
HtmlInputPassword Защищённое текстовое поле ‑ тэг <input> типа password «
HtmlInputRadioButton Переключатель ‑ тэг <input> типа radio
HtmlInputReset Командная кнопка типа reset «
HtmlInputSubmit Командная кнопка типа submit «
HtmlInputText Текстовое поле ‑ тэг <input> типа password или text

Событие ServerChange, генерируемое при изменении в состоянии элемента управления между возвратами формы, поддерживается input-элементами HtmlInputCheckBox, HtmlInputRadioButton, HtmlInputHidden и HtmlInputText.

Элемент управления HtmlInputButton генерирует событие ServerClick, позволяя задать код, который будет выполнен на сервере после щелчка кнопки.

Элемент управления HtmlInputImage имеет несколько дополнительных свойств, связанных с выводом изображения. В частности, он позволяет задать альтернативный текст (выводимый, когда изображение недоступно), рамку и способ выравнивания изображения по отношению к остальной части страницы. Обработчик события ServerClick этого элемента управления получает структуру данных ImageClickEventArgs, которая хранит в свойствах X и Y координаты указателя мыши в момент щелчка.

Элемент управления HtmlInputFile является HTML-средством загрузки файлов из браузера на веб-сервер. На сервере файл упаковывается в объект типа HttpPostedFile и остается там до тех пор, пока не будет явно обработан, например, сохранен на диске или в базе данных. Объект HttpPostedFile имеет свойства и методы, с помощью которых можно получить информацию о файле, извлечь его и сохранить. Кроме этого, элемент управления HttpInputFile позволяет ограничить перечень типов файлов, которые разрешено загружать на сервер. ASP.NET позволяет в некоторой степени контролировать количество загружаемых данных. Максимально допустимый размер файла (по умолчанию ‑ 4 Мбайт) можно задать в атрибуте maxRequestLength раздела <httpRuntime> конфигурационного файла веб-приложения.

5.9. ЭЛЕМЕНТЫ УПРАВЛЕНИЯ WEB

Элементы управления Web, определенные в пространстве имен System.Web.UI.WebControls, являются серверными компонентами, создаваемыми при наличии атрибута runat="server". В теле aspx-страницы Web-элементы можно отличить по префиксу пространства имен asp. Некоторые из этих элементов управления подобны серверным элементам HTML, но интерфейс программирования при этом имеют разный. Web-элементы обладают более согласованным и абстрактным API и более богатой функциональностью.

Все элементы управления Web наследуются от базового класса WebControl. Он является производным от класса Control и определяет ряд собственных свойств и методов. Большинство членов класса WebControl связаны с внешним видом и поведением элементов управления (это шрифты, стиль, цвета, CSS).

Свойства класса WebControl перечислены в табл. 19.

Таблица 19

Свойства класса WebControl

Свойство Описание
AccessKey Позволяет задать клавишу, которая совместно с клавишей Alt будет использоваться для быстрого перехода к элементу управления. Поддерживается в IE версии 4.0 и выше
Attributes Коллекция атрибутов, не имеющих соответствия среди свойств элемента управления. Атрибуты, задаваемые через эту коллекцию, выводятся в составе страницы как атрибуты HTML
BackColor Цвет фона элемента управления
BorderColor Цвет рамки элемента управления
BorderStyle Стиль рамки элемента управления
BorderWidth Ширина рамки элемента управления
CssClass Класс CSS, связанный с элементом управления
Enabled Указывает, активен ли элемент управления
Font Свойства шрифта элемента управления
ForeColor Цвет фона элемента управления; используется при выводе текста
Height Высота элемента управления. Задается как значение типа Unit
Style Возвращает коллекцию CssStyleCollection, составленную из атрибутов, которые присвоены выводимому тэгу элемента
Tablndex Индекс перехода по клавише Tab для элемента управления
ToolTip Текст всплывающей подсказки, которая выводится при наведении на элемент управления указателя мыши
Width Ширина элемента управления. Задается как значение типа Unit

Класс WebControl определяет несколько дополнительных методов, отсутствующих у базового класса Control. Все они перечислены в табл. 20.

Таблица 20

Методы класса WebControl

Метод Описание
ApplyStyle() Копирует в элемент управления непустые элементы заданного стилевого объекта. Существующие стилевые свойства переопределяются
CopyBaseAttributes() Импортирует из заданного элемента управления Web свойства AccessKey, Enabled, ToolTip, TabIndex и Attributes. Иными словами, копирует все свойства, не инкапсулированные объектом Style
MergeStyle() Подобно методу ApplyStyle() копирует в элемент управления непустые элементы заданного стиля, но существующие стилевые свойства не переопределяются
RenderBeginTag() Осуществляет рендеринг открывающегося HTML-тэга элемента управления в заданный объект записи текста. Вызывается перед методом RenderControl()
RenderEndTag() Осуществляет рендеринг закрывающегося HTML-тэга элемента управления. Вызывается сразу после метода RenderControl()

Перечислим наиболее популярные и важные элементы управления Web в табл. 21, а затем рассмотрим некоторые из них более подробно.

Таблица 21

Ключевые элементы управления Web

Элемент управления Что представляет
Button Кнопку, реализованную в виде тэга <input>
Checkbox Флажок, реализованный в виде тэга <input>
FileUpload Элемент интерфейса, дающий возможность пользователю выбрать файл для загрузки на сервер «
HiddenField Скрытое поле «
HyperLink Якорный тэг <a>; позволяет указать либо адрес для перехода, либо сценарий для выполнения
Image Изображение, реализованное в виде тэга <img>
ImageButton Изображение, отвечающее на щелчки мыши подобно настоящей кнопке
ImageMap Изображение с необязательной областью в нём, которую можно щелкать мышью «
Label Обыкновенный статический текст, не реагирующий на щелчки. Реализован в виде тэга <span>
LinkButton Якорный тэг, обеспечивающий возврат формы с использованием со­ответствующего механизма ASP.NET. Это гиперссылка особого рода, для которой программист не может задать целевой URL
MultiView Элемент управления, действующий как контейнер группы дочерних элементов типа View «
Panel HTML-контейнер, реализованный с использованием блочного элемента <div>. В ASP.NET 2.0 этот контейнер поддерживает скроллинг
RadioButton Одну кнопку переключателя, реализованную в виде тэга <input>
Table Внешний табличный контейнер; эквивалентен HTML-элементу <table>
TableCell Ячейку таблицы; эквивалентен HTML-элементу <td>
TableRow Строку таблицы; эквивалентен HTML-элементу <tr>
TextBox Текстовое поле, реализованное в виде тэга <input> или <textarea>, что зависит от запрошенного типа текста. Может работать в одно- или многострочном режиме либо в режиме ввода пароля
View Контейнер группы элементов управления. Этот элемент управления всегда должен содержаться в элементе управления MultiView «



Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 494; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.055 сек.