- •Федеральное агентство по образованию
- •Таганрогский государственный радиотехнический университет
- •Программирование в Интернет
- •Лекция 1. Введение в Web-программирование
- •Принцип работы Web-приложений
- •Обзор известных средств программирования для Internet
- •Первое решение: cgi
- •Преимущества cgi
- •Недостатки cgi
- •Второе решение: isapi-интерфейс
- •Преимущества isapi
- •Недостатки isapi
- •Третье решение: asp
- •Преимущества asp
- •Недостатки asp
- •Лекция 2. Введение в php
- •Что такое рнр?
- •Архитектура рнр
- •Первая программа на php
- •Взаимодействие html и php
- •Лекция 3. Типы данных php
- •Комментарии
- •Логические переменные
- •Синтаксис логических переменных
- •Приведение значений к логическому типу
- •Целые числа
- •Синтаксис целочисленных переменных
- •Целочисленное переполнение
- •Приведение к целочисленному типу
- •Вещественные числа
- •Константы
- •Преобразование строк
- •Лекция 4. Переменные
- •Изменение типа переменной
- •Преобразование типа переменной
- •Операторы и выражения
- •Оператор присваивания
- •Арифметические операторы
- •Оператор конкатенации
- •Дополнительные операторы присваивания
- •Операторы сравнения
- •Логические операторы
- •Увеличение или уменьшение целой переменной
- •Порядок вычисления операторов
- •Динамические переменные
- •Ссылки на переменные
- •Лекция 5. Инструкция if
- •Блок else инструкции if
- •Блок elseif инструкции if
- •Инструкция switch
- •Оператор ?
- •Цикл while
- •Цикл do... While
- •Цикл for
- •Прерывание циклов инструкцией break
- •Пропуск итераций с помощью инструкции continue
- •Лекция 6. Функции
- •Аргументы функции
- •Аргументы по умолчанию
- •Область видимости переменных
- •Лекция 7. Краткий обзор .Net Framework
- •Промежуточный язык Microsoft Intermediate Language
- •Компиляция “Just In Time”
- •Управляемый код и данные
- •Лекция 8. Создание приложений Web Forms Файлы проекта Web Forms
- •Файлы Web-приложения
- •Обработка событий События жизненного цикла Web-приложения
- •Сохранение данных Web-формы
- •Visual Basic .Net
- •Visual c#
- •События Application и Session
- •Visual Basic .Net
- •Visual c#
- •События Web-формы
- •Visual Basic .Net
- •Visual c#
- •События серверных элементов управления
- •Visual Baste .Net
- •Visual c#
- •Лекция 9. Работа с Web-объектами Введение в пространство имен
- •Пространства имен в Web-приложениях Обзор пространства имен Web
- •Visual Basic .Net
- •Visual c#
- •Использование объекта Application
- •Visual Baste .Net
- •Visual c#
- •Использование объекта Page
- •Visual Basic
- •Visual с#
- •Использование объекта Request
- •Visual Baste .Net
- •Visual c#
- •Использование объекта Response
- •Visual Baste .Net
- •Visual c#
- •Лекция 10. Сохранение сведений о состоянии Способы сохранения сведений о состоянии
- •Использование строк запросов
- •Visual Basic .Net
- •Visual c#
- •Использование переменных состояния Application и Session
- •Упорядочение доступа к переменным состояния
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Отключение переменных состояния Session
- •Лекция 11. Web-элементы управления. Использование элементов управления.
- •Простые элементы управления
- •Элементы управления Label
- •Элементы управления HyperLink
- •Элементы управления Image
- •Элементы управления CheckBox
- •Элементы управления RadioButton
- •Элементы управления Table
- •Элементы управления DropDownList
- •Элементы управления ListBox
- •Элементы управления CheckBoxList
- •Элементы управления RadioButtonList
- •Лекция 12. Проверяющие элементы управления
- •Использование проверяющих элементов управления
- •RequiredFieldValidator
- •RangeValidator
- •CompareValidator
- •RegularExpression Validator
- •CustomValidator
- •ValidationSummary
- •Отмена проверки вводимых данных
- •Лекция 13. Введение в Web-сервисы Обзор Web-сервисов xml
- •Инфраструктура Web-сервисов xml
- •Взаимодействие клиентов и Web-сервисов xml
- •Лекция 14. Механизм обнаружения Web-сервисов xml
- •Использование Web-сервисов xml
- •Добавление Web-ссылки
- •Генерация класса прокси
- •Создание объекта класса прокси
- •Доступ к Web-сервису xml через объект прокси
- •Сериализация
- •Лекция 15. Управление Web-методами при помощи атрибутов Атрибуты Web-метода
- •Буферизация откликов Web-метода
- •Visual c#
- •Пользовательские маркеры
- •Подписи
- •Шифрование
- •Лекция 17. Модель безопасности asp.Net
- •Лекция 18. Введение в инфраструктуру Microsoft .Net Remoting
- •Объекты .Net Remoting
- •Передача объектов по механизму .Net Remoting
- •Пример кода для простого серверного объекта .Net Remoting
- •Срок жизни, определяемый арендой
- •Channel Services (System.Runtime.Remoting.Channels)
- •Пример кода, загружающего Channel Services
- •Форматирующие объекты сериализации (System.Runtime.Serialization.Formatters)
Лекция 12. Проверяющие элементы управления
Шесть проверяющих элементов управления (validation controls или validators), определенных в пространстве имен System.Web.UI.WebControls, предназначены для проверки данных, вводимых пользователем в Web-формы. Проверяющие элементы управления ASP.NET интеллектуальны, они выполняют проверки как на клиенте, так и на сервере, генерируют код JavaScript, который исполняется браузером и не позволяет возвращать форму, содержащую неверные данные. Когда возврат формы произошел, они снова проверяют введенные данные на сервере.
Почему эти элементы управления повторяют проверки на сервере? Во-первых, это борьба с фальсификацией данных при пересылке. Во-вторых, так можно проверить введенные пользователем данные и в том случае, когда его браузер не поддерживает клиентские сценарии. Проверка пользовательского ввода на клиенте очень полезна, так как предотвращает возвраты форм, которые все равно будут отвергнуты сервером.
Рассмотрим виды проверок, которые способны выполнять проверяющие элементы управления:
заполнение поля ввода (RequiredFieldValidator);
введенное значение находится в заданном диапазоне (RangeValidator);
введенная строка соответствует регулярному выражению (RegularExpressionValidator);
введенное значение равно, не равно, меньше, меньше или равно, больше или больше или равно заданному значению или другому введенному значению (CompareValidator).
Если ни одна из этих проверок не годится, можно задать собственные процедуры, задействовав элемент управления CustomValidator. Элемент управления ValidationSummary позволяет отображать совместно сообщения об ошибках, обнаруженных другими проверяющими элементами управления.
Следует иметь в виду один нюанс поведения проверяющих элементов управления: генерируемый ими клиентский код проверки работает не во всех браузерах. Применяемый для этой цели JavaScript-код интенсивно использует DHTML-модель объектов документа (DOM) браузера. Прежде чем W3C стандартизовал DOM, в Internet Explorer и Netscape Navigator были реализованы несовместимые DOM. Проверка на клиентской стороне работает в Internet Explorer 4 и более поздних. ASP.NET определяет тип браузера и даже не пытается генерировать клиентский код проверки для Navigator.
Однако эти несовместимости влияют только на проверку на клиентской стороне — на серверной стороне проверки работают независимо от типа браузера, поэтому пользователь, применяющий устаревший браузер, не сможет переслать неверные данные незаметно, но при каждой такой попытке появляются накладные расходы по пересылке данных на сервер и обратно.
Использование проверяющих элементов управления
Все проверяющие элементы управления, кроме ValidationSummary, имеют общий базовый класс BaseValidator и, таким образом, имеют ряд общих характеристик:
Все имеют свойство ControlToValidate, указывающее элемент управления, чьи данные анализирует этот проверяющий элемент управления.
Все имеют свойство ErrorMessage, которое содержит сообщение, отображаемое в том случае, когда проверяющий элемент управления зафиксировал ошибку. Место на Web-странице, где появляется это сообщение, зависит от того, где на странице находится проверяющий элемент управления. Если, например, он справа от элемента управления TextBox, то и сообщение также появится справа от TextBox.
Все имеют свойство ForeColor, указывающее цвет сообщений об ошибке; по умолчанию — красный.
Все имеют свойство Display, указывающее способ отображения сообщения ошибке. Оно может иметь значение Static, когда место для сообщения резервируется на Web-странице статически; Dynamic, когда место на странице не резервируется (а значит, внешний вид страницы может измениться при срабатывании проверяющего элемента управления); None, когда сообщение об ошибке не отображается совсем. Последнее используется для отображения сводки сообщений об ошибках в элементе управления ValidationSummary.
Все имеют свойство EnableClientScript, позволяющее выборочно включать/отключать проверки на клиентской стороне. По умолчанию свойство установлено в true. Если задано false, элемент управления не генерирует клиентский сценарий на JavaScript и, таким образом, отключает проверки на клиенте. Проверки на сервере выполняются в любом случае.
Ниже приведен простой пример использования некоторых из этих свойств. Следующий код объявляет TextBox и присоединяет к нему RequiredFieldValidator. Также задается сообщение, отображаемое при обнаружении ошибки проверяющим элементом управления, на странице резервируется место для отображения текста сообщения (по возможности не допуская изменения взаиморасположения элементов страницы при отображении сообщения) и устанавливается голубой цвет для вывода текста сообщения:
<asp:TextBox ID="Password" TextMode="Password" RunAt="server" />
<asp:RequiredFieldValidator
ControlToValidate="Password"
ErrorMessage="Required field"
Display="static"
ForeColor="blue"
RunAt="server" />
Можно не указывать атрибут ErrorMessage и поместить сообщение об ошибке между начальным и завершающими тэгами проверяющего элемента управления:
<asp: RequiredFieldValidator
ControlToValidate="Password"
Display="static"
ForeColor="blue"
RunAt="server" >
Required Field </asp: RequiredFieldValidator>
Недостаток задания сообщения об ошибке, таким образом, в том, что его нельзя будет использовать элементами управления ValidationSummary. Достоинство – возможность создания «красивых» сообщений об ошибках с использованием HTML-тегов.
Проверяющий элемент управления может быть присоединен только к одному элементу управления, однако количество проверяющих элементов управления на странице не ограничено. Кроме того, к одному элементу управления может быть присоединено несколько проверяющих элементов управления. Ниже RequiredFieldValidator и RegularExpressioriValidator совместно проверяют, что пароль не пуст и содержит не менее 8 символов:
<asp:TextBox ID="Password" TextMode="Password" RunAt="server" />
<asp:RequiredFieldValidator
ControlToValidate="Password"
ErrorMessage="Required field"
Display="dynamic"
ForeColor="blue"
RunAt="server" />
<asp: RegularExpressionValidator
ControlToValidate="Password"
ValidationExpression=". {8, }"
ErrorMessage="You must enter at least 8 characters"
Display="dynamic"
ForeColor="blue"
RunAt="server" />
RequiredFieldValidator здесь может показаться лишним, так как RegularExpressionValidator все равно проверяет, что TextBox содержит не менее 8 символов. Однако RegularExpressionValidator не проверяет незаполненные поля. Это справедливо и для других проверяющих элементов управления.
Замечание: в предыдущем примере свойство Display проверяющих элементов управления установлено в Dynamic, а не в Static. Если написать Display=«static», то сообщение об ошибке RegularExpressionValidator будет отображаться далеко справа от TextBox, так как пространство непосредственно справа от него зарезервировано для сообщения от RequiredFieldValidator. Display=«dynamic» не позволяет ни одному из элементов управления захватить место, которое может понадобиться другому, и таким образом обеспечивает вывод обоих сообщений в одном и тот же месте.
