КАТЕГОРИИ: Архитектура-(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
В табл. 14 приведено описанием методов класса Control.
Таблица 14 Методы класса Control
Класс Control определяет набор базовых событий, поддерживаемых всеми серверными элементами управления. Эти события описаны в табл. 15.
Таблица 15 События класса Control
Начиная с 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 можно использовать для установки таких 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
Базовым классом контейнерных элементов управления 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, предназначенные для ввода данных
Событие 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
Класс WebControl определяет несколько дополнительных методов, отсутствующих у базового класса Control. Все они перечислены в табл. 20. Таблица 20 Методы класса WebControl
Перечислим наиболее популярные и важные элементы управления Web в табл. 21, а затем рассмотрим некоторые из них более подробно. Таблица 21 Ключевые элементы управления Web
Дата добавления: 2014-01-11; Просмотров: 494; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |