- •1. Язык программирования c# 3
- •2. Базовые элементы .Net Framework 67
- •3. ТЕхнология .Net Remoting 144
- •Введение
- •1. Язык программирования c#
- •1.1. Платформа .Net – обзор архитектуры
- •1.2. Язык c# - общие концепции синтаксиса
- •1.3. Система типов языка c#
- •1.4. Преобразования типов
- •1.5. Идентификаторы, ключевые слова и литералы
- •1.6. Объявление переменных, полей и констант
- •1.7. Выражения и операции
- •1.8. Операторы языка c#
- •1.9. Объявление и вызов методов
- •1.10. Массивы в c#
- •1.11. Работа с символами и строками в c#
- •1.12. Синтаксис объявления класса, Поля и методы класса
- •1.13. Свойства и индексаторы
- •1.14. Конструкторы класса и Жизненный цикл объекта
- •1.15. Наследование классов
- •1.16. Перегрузка операЦий
- •1.17. Делегаты
- •1.18. События
- •1.19. Интерфейсы
- •1.20. Структуры и перечисления
- •1.21. Пространства имен
- •1.22. Генерация и обработка исключительных ситуаций
- •1.23. Нововведения в языке c# 2.0
- •1.24. Обобщенные типы (generics)
- •2. Базовые элементы .Net Framework
- •2.1. Метаданные и механизм отражения
- •2.2. Пользовательские и встроенные атрибуты
- •2.3. Пространство имен system.Collections
- •2.4. Работа с файлами и директориями
- •2.5. Использование потоков данных
- •2.6. Сериализация
- •2.7. Сериализация объектов в нестандартном формате
- •2.8. Введение в xml
- •2.9. Работа с xml-документами в .Net framework
- •2.10. МНогопоточное программирование
- •2.11. Синхронизация потоков
- •2.12. Асинхронный вызов методов
- •2.13. Состав и взаимодействие сборок
- •2.14. Конфигурирование сборок
- •3. ТЕхнология .Net Remoting
- •3.1. Домены приложений
- •3.2. Архитектура .Net Remoting
- •3.3. Активация удаленных объектов и их время жизни
- •3.4. Программная настройка Remoting
- •3.5. Удаленные Объекты с клиентской активацией
- •3.6. Настройка Remoting при помощи конфигурационных файлов
- •3.7. Хостинг распределенных приложений
- •3.8. Объекты-сообщения
- •3.9. Пользовательские канальные приемники
- •4.1. Архитектура ado.Net
- •4.2. Учебная база cd Rent
- •4.3. Соединение с базой данных
- •4.4. Выполнение команд и запросов к базе данных
- •4.5. Чтение данных и объект DataReader
- •4.6. Параметризированные запросы
- •4.7. Рассоединенный набор данных
- •4.8. Заполнение Рассоединенного набора данных
- •4.9. Объект класса DataColumn – колонка таблицы
- •4.10. Объекты класса DataRow – строки таблицы
- •4.11. Работа с объектом класса DataTable
- •4.12. DataSet и схема рассоединенного набора данных
- •4.13. Типизированные DataSet
- •4.14. Поиск и фильтрация данных в DataSet
- •4.15. Класс DataView
- •4.16. СиНхронизация набора данных и базы
- •5.1. Архитектура и общие концепции asp.Net
- •5.2. Пример aspx-страницы. Структура страницы
- •5.3. Директивы страницы
- •5.4. Класс System.Web.Ui.Page. События страницы
- •5.5. Серверные элементы управления
- •5.6. Элементы управления Web Controls
- •5.7. Проверочные элементы управления
- •5.8. Списковые элементы управления
- •5.9. Связывание данных
- •5.11. Управление состояниями в web-приложениях
- •5.12. Кэширование
- •5.13. Безопасность в web-приложениях
- •5.14. Создание пользовательских элементов управления
- •Литература
5.5. Серверные элементы управления
Важным элементом технологии ASP.NET являются серверные элементы управления (server controls). Серверный элемент управления – это некий класс, объект которого агрегирован в страницу, то есть является полем класса-страницы. При выполнении страницы серверный элемент, как правило, транслируется в HTML-элемент управления.
Библиотека серверных элементов насчитывает порядка сотни классов. Условно все элементы можно разделить на следующие группы:
Серверные HTML-элементы – базирующиеся на сервере эквиваленты обычных HTML-элементов. Имеют те же атрибуты, что и обычные HTML-элементы.
Элементы управления Web Controls – набор элементов, равнозначный обычным HTML-элементам формы <form>. Имеют расширенный набор свойств и событий, облегчающий создание страницы.
Проверочные элементы управления – набор специальных элементов для проверки корректности значений, вводимых в другие элементы на странице. Выполняют проверку на стороне клиента, на стороне сервера или в обоих местах.
Списковые элементы управления – обеспечивают различные способы построения списков. Помимо этого, списковые элементы могут быть связаны с данными, хранящимися как в локальных структурах, так и в базах данных.
Развитые элементы управления ASP.NET – создают сложные, специфичные для задач выходные данные (например, календарь или меняющийся баннер).
Мобильные элементы управления – используются при построении приложений ASP.NET для мобильных платформ.
Для всех серверных элементов управления справедливы следующие замечания. Настройку таких элементов можно выполнять программно в методах страницы. Как правило, при работе с визуальными элементами используется IDE, облегчающее настройку. В частности, для элементов и страницы имеется окно свойств и событий. Важно понимать, что значения свойств элементов транслируются в описании страницы в соответствующие атрибуты. Например, следующий фрагмент страницы показывает, что у элемента <asp:Button> (кнопка) заданы свойства ID (идентификатор элемента, имя поля в классе страницы), Text (надпись на кнопке), OnClick (имя метода-обработчика события):
<asp:Button ID="B1" OnClick="B1_Click" runat="server" Text="Send" />
При задании серверного элемента на странице используется соответствующий тэг с обязательным атрибутом runat="server".
В некоторых случаях элемент управления образует в описании страницы секцию, ограниченную открывающими и закрывающим тэгом, а свойство элемента задано как содержимое секции (literal content). Во фрагменте кода так задана надпись на странице:
<asp:Label id="Label1" runat="server">
No Name
</asp:Label>
Рассмотрим набор серверных HTML-элементов. Они представлены классами из пространства имен System.Web.UI.HtmlControls. Базовым классом для всех серверных HTML-элементов является класс HtmlControl. Основные элементы данного класса перечислены в таблице 40.
Таблица 40
Элементы класса System.Web.UI.HtmlControls
Имя элемента |
Описание |
Attributes |
Возвращает коллекцию пар имя-значение для всех атрибутов в файле .aspx для элемента управления. Может использоваться для чтения и установки нестандартных атрибутов |
Controls |
Объект типа ControlCollection. Содержит ссылки на элементы управления, являющиеся «дочерними»1 для данного |
Disabled |
Булево значение; показывает, отключен ли элемент |
EnableViewState |
Булево значение, которое управляет поддержкой сохранения состояния в элементе и его «потомках». По умолчанию – сохранение состояния включено (true) |
ID |
Свойство задает строку-идентификатор элемента управления (имя поля в классе-странице) |
Page |
Ссылка на объект Page, содержащий элемент управления |
Parent |
Ссылка на родительский элемент в страничной иерархии |
Style |
Коллекция свойств CSS, которые будут добавлены к тэгу элемента при отображении. Позволяет настраивать внешний вид элемента |
TagName |
Строка, имя HTML-тега, который соответствует элементу |
Visible |
Булево значение; показывает, виден ли элемент на странице |
DataBind() |
Метод выполняет связывание данных для элемента управления и всех его потомков |
FindControl() |
Метод позволяет найти элемент управления в коллекции элементов-потомков данного |
HasControls() |
Метод возвращает true, если элемент управления имеет потомков |
DataBinding |
Данное событие происходит при связывании данных |
Класс HtmlContainerControl – это второй базовый класс для серверных HTML-элементов. Он используется как предок теми элементами, которые должны иметь закрывающий тэг (то есть обязательно образуют секцию в описании страницы). Данный класс наследуется от класса HtmlControl и имеет два полезных свойства:
InnerHtml – строка с HTML-содержимым и текстом, заключенным между открывающим и закрывающим тэгом элемента;
InnerText – строка только с текстовым содержимым элемента.
Далее приведена таблица, содержащая краткое описание серверных HTML-элементов.
Таблица 41
Серверные HTML-элементы
Имя элемента |
Описание |
Специфичные свойства и события |
HtmlAnchor |
Ссылка на страницу или часть страницы |
Href, Target, Title, Name, OnServerClick |
HtmlImage |
Изображение на странице с настраиваемыми параметрами |
Align, Alt, Border, Height, Src, Width |
HtmlForm |
Обрамляющая форма для других элементов управления |
Name, Enctype, Method, Target |
HtmlButton |
Кнопка-контейнер (не поддерживается браузерами Opera и Navigator) |
CausesValidation, OnServerClick |
HtmlInputButton |
Кнопка на форме |
Name, Type, Value, CausesValidation, OnServerClick |
HtmlInputText |
Текстовое поле |
MaxLength, Name, Size, Type, Value, OnServerChange |
HtmlInputCheckBox |
Переключатель-флаг |
Checked, Name, Type, Value, OnServerChange |
HtmlInputRadioButton |
Один из группы взаимно исключающих переключателей |
Checked, Name, Type, Value, OnServerChange |
HtmlInputImage |
Изображение на странице, которое допускает щелчок (как кнопка Submit) |
Align, Alt, Border, Name, Src, Type, Value, CausesValidation, OnServerClick |
HtmlInputFile |
Реализует возможность копирования файлов на сервер |
Accept, MaxLength, Name, PostedFile, Size, Type, Value |
HtmlInputHidden |
Невидимое поле на странице (для передачи служебных значений) |
Name, Type, Value, OnServerChange |
HtmlTextArea |
Текст, состоящий из нескольких строк |
Cols, Name, Rows, Value, OnServerChange |
HtmlSelect |
Списковый элемент управления |
Multiple, SelectedIndex, Size, Value, DataSource, DataTextField, DataValueField Items (коллекция), OnServerChange |
HtmlTable |
Таблица |
Align, BgColor, Border, BorderColor, CellPadding, CellSpacing, Height, NoWrap, Width Rows (коллекция) |
HtmlTableRow |
Строка таблицы |
Align, BgColor, Border, BorderColor, Height, VAlign Cells (коллекция) |
HtmlTableCell |
Ячейка таблицы |
Align, BgColor, Border, BorderColor, ColSpan, Height, NoWrap, RowSpan, VAlign, Width |
Обсудим некоторые свойства и события элементов. Если булево свойство CausesValidation установлено в true, то при щелчке на элементе управления выполняется проверка страницы (о проверочных элементах будет рассказано ниже). Элементы управления HtmlAnchor, HtmlButton, HtmlInputButton, HtmlInputImage генерируют событие OnServerClick, которое происходит при нажатии на элементе. Обработчик данного события выполняется на сервере и получает два параметра. Первый – ссылка на объект, породивший событие, откуда можно получить ID источника события. Второй – объект типа EventArgs с дополнительной информацией о событии. Элементы HtmlInputText, HtmlInputCheckBox, HtmlInputRadioButton, HtmlInputHidden и HtmlSelect генерируют событие OnServerChange. Событие порождается, когда страница передается на сервер, для каждого элемента, чье значение изменилось с момента отправки клиенту страницы.
Рассмотрим пример страницы с некоторыми серверными HTML-элементами. Страница демонстрирует настройку отдельных свойств элементов, а также наличие обработчиков событий.
<%@ Page Language="C#" %>
<script runat="server">
void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) Radio1.Checked = true;
}
void Submit1_Click(object sender, EventArgs e) {
DIV1.InnerHtml += "Name is " + Text1.Value + "<br />";
}
void Radio1_Change(object sender, EventArgs e) {
if (Radio1.Checked)
DIV1.InnerHtml += "Have an ID" + "<br />";
else DIV1.InnerHtml += "Dont have an ID" + "<br />";
}
</script>
<html>
<body>
<form id="form1" runat="server">
<div>
Your name:
<input id="Text1" runat="server" type="text" />
<br /><br />
Password:
<input id="Pass1" runat="server" type="password" />
<br /><br />
Have an ID?
<input id="Radio1" runat="server" type="radio"
onserverchange="Radio1_Change" />
Yes
<input id="Radio2" runat="server" type="radio"
onserverchange="Radio1_Change" />
No
<br /><br />
<input id="Submit1" type="submit" value="Submit!"
onserverclick="Submit1_Click" runat="server" />
<br /><br />
</div>
</form>
</body>
</html>
Вид страницы в браузере после заполнения полей и нажатия кнопки Submit показан на рисунке 17.
Рис. 17. Страница с серверными HTML-элементами в браузере