- •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.7. Проверочные элементы управления
Кроме визуальных элементов управления, ASP.NET предоставляет набор проверочных элементов. Проверочные элементы управления налагают определенные разработчиком ограничения на данные, вводимые пользователем в формы. При настройке проверочный элемент связывается с элементом управления на форме. В качестве проверяемых могут выступать элементы HTMLInputText, HTMLTextArea, HTMLSelect, HTMLInputFile, TextBox, DropDownList, ListBox, RadioButtonList. В случае если проверка закончилась неудачей, проверочный элемент способен отобразить текстовое разъясняющее сообщение около проверяемого элемента.
В web-приложении проверка данных, вводимым пользователем, может выполняться на стороне клиента, на стороне сервера или в обоих местах. Проверка на стороне клиента уменьшает количество обменов между клиентом и сервером, необходимых для успешного завершения формы. Однако клиентская проверка может быть выполнена не всегда. Во-первых, для выполнения проверки браузер должен поддерживать язык сценариев. Во-вторых, клиент часто не обладает достаточной информацией, требуемой для завершения проверки. Поэтому проверки на стороне клиента обычно используются в сочетании с проверками на стороне сервера. Достоинство проверочных элементов ASP.NET заключается в том, что они способны автоматически распознавать поддержку клиентом языка сценариев и в зависимости от этого генерировать клиентский либо серверный код проверки.
Рассмотрим общую архитектуру проверочных элементов. Любой проверочный элемент реализует интерфейс System.Web.UI.IValidator, который объявлен следующим образом:
interface IValidator {
string ErrorMessage{set; get; }
bool IsValid{set; get; }
void Validate();
}
Метод Validate() выполняет процедуру проверку, свойство IsValid указывает, успешно ли выполнилась проверка, а свойство ErrorMessage позволяет определить строку-сообщение в случае провала проверки.
Для всех проверочных элементов базовым является абстрактный класс BaseValidator (из пространства имен System.Web.UI.WebControls), основные элементы которого перечислены в таблице 44.
Таблица 44
Элементы класса System.Web.UI.WebControls.BaseValidator
Имя элемента |
Описание |
ControlToValidate |
Строка, идентификатор того элемента управления, который проверяется |
Display |
Свойство определяет, должно ли значение проверочного элемента занять некоторое пространство, если оно не выводится. Значение свойства – элемент перечисления ValidatorDisplay |
EnableClientScript |
Булево свойство, управляет использованием клиентского скрипта для проверки |
Enabled |
Булево свойство для включения или выключения проверочного элемента |
ErrorMessage |
Свойство-строка, позволяет установить или прочитать текстовое сообщение, которое отображается в элементе ValidationSummary при неуспешной проверке |
ForeColor |
Цвет строки проверочного элемента (по умолчанию – красный) |
IsValid |
Булево свойство, которое показывает, успешно ли выполнилась проверка |
Text |
Строка, которую отображает проверочный элемент при провале проверки |
Validate() |
Метод выполняет процедуру проверку и обновляет значение свойства IsValid |
Класс Page поддерживает список всех проверочных элементов на странице в коллекции Validators. Класс Page предоставляет метод верхнего уровня Validate(), который применяется для коллективного вызова одноименного метода всех проверочных элементов. Этот метод вызывается на стороне сервера автоматически, после того загружено состояние элементов управления страницы. Метод Page.Validate() устанавливает булево свойство страницы IsValid. Как правило, значение данного свойства проверяется в обработчике события Page_Load.
Опишем подробнее конкретные проверочные элементы ASP.NET.
Элемент: RequiredFieldValidator
Назначение: Используется для проверки того, что элемент управления не пуст или значение в нем изменено.
Специфичные свойства:
InitialValue – проверка считается не пройденной, если при потере фокуса элементом управления значение в нем равно строке InitialValue. По умолчанию значение свойства – пустая строка.
Элемент: CompareValidator
Назначение: Применяется для сравнения двух полей формы или поля и константы. Может использоваться для того, чтобы проверить, соответствует ли значение поля определенному типу.
Специфичные свойства:
ControlToCompare – строка, идентификатор того элемента управления, с которым сравнивается связанный с CompareValidator элемент.
ValueToCompare – значение (в виде строки), с которым сравнивается элемент, связанный с CompareValidator1.
Operator – операция сравнения. Тип свойства – перечисление ValidationCompareOperator, в которое входят следующие элементы: Equal, NotEqual, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual, DataTypeCheck. Если Operator равен DataTypeCheck, то выполняется только проверка того, соответствует ли значение в элементе управления типу, заданному в свойстве Type.
Type – тип, в который будет преобразовано значение в элементе управления перед проверкой. Свойство принимает значения из перечисления ValidationDataType c элементами String, Integer, Double, Date, Currency.
Элемент: RangeValidator
Назначение: Проверяет, входит ли значение элемента управления в указанный текстовый или числовой диапазон.
Специфичные свойства:
MaximumValue, MinimumValue – строки, задающие границы диапазона проверки.
Type – тип, в который будет преобразовано значение в элементе управления перед проверкой. Аналог соответствующего свойства из CompareValidator.
Элемент: RegularExpressionValidator
Назначение: Проверяет, удовлетворяет ли значение элемента управления заданному регулярному выражению.
Специфичные свойства:
ValidationExpression – строка с регулярным выражением.
Элемент: CustomValidator
Назначение: Выполняет определенную пользователем проверку при помощи заданной функции (на стороне клиента, на стороне сервера или в обоих местах).
Специфичные свойства и события:
OnServerValidate – обработчик этого события должен быть задан для проведения проверки на стороне сервера. Фрагмент страницы показывает пример обработчика:
<script runat="server">
void ServerValidation(object source,
ServerValidateEventArgs arguments) {
int i = int.Parse(arguments.Value);
arguments.IsValid = ((i%2) == 0);
}
</script>
ClientValidationFunction – строки с именем клиентской функции, которая будет использоваться для проверки. Так как проверка выполняется на клиенте, то проверочная функция должна быть включена в клиентский скрипт и может быть написана на JavaScript или на VBScript. Следующий фрагмент страницы показывает пример клиентской функции для проверки. Обратите внимание на аргументы функции и их использование:
<script language="vbscript">
Sub ClientValidate(source, arguments)
If (arguments.Value mod 2) = 0 Then
arguments.IsValid = true
Else
arguments.IsValid = false
End If
End Sub
</script>
Элемент: ValidationSummary
Назначение: Элемент может использоваться для отображения на странице итогов проверок. Если у проверочных элементов определены свойства ErrorMessage, то элемент покажет их в виде списка.
Специфичные свойства:
DisplayMode – свойство позволяет выбрать вид суммарного отчета об ошибках. Значения свойства – элемент перечисления ValidationSummaryDisplayMode: BulletList (по умолчанию), List, SingleParagraph.
HeaderText – строка с заголовком отчета.
ShowMessageBox – если данное булево свойство установлено в true, то отчет отображается в отдельном диалоговом окне.
ShowSummary – если данное булево свойство установлено в true (по умолчанию), то отчет отображается на странице. Свойство часто используется совместно с ShowMessageBox. Если, например ShowMessageBox=true, ShowSummary=false, то отчет отображается только в диалоговом окне, но не на странице.
В качестве примера использования проверочных элементов, а также элементов Web Controls, рассмотрим простую aspx-страницу регистрации. Пользователю необходимо ввести свой адрес электронной почты в качестве Login, ввести и повторить пароль входа. Опционально пользователь может указать свой возраст, который должен быть целым числом в пределах от 10 до 80. При нажатии на кнопку Save происходит проверка страницы (автоматически). Если проверка прошла успешна, выполняется код «сохранения» информации.
Исходный код aspx-страницы приведен ниже:
<%@ Page Language="C#" %>
<script runat="server">
void Button1_Click(object sender, EventArgs e) {
if (IsValid)
Label2.Text = "Info saved successfully";
}
</script>
<html>
<body>
<form runat="server" id="Form1">
<asp:Label ID="Lbl1" Text="Registration" runat="server"/>
<br>
Email as Login
<asp:TextBox ID="TB1" runat="server" />
<asp:RequiredFieldValidator ID="RFV1" runat="server"
ErrorMessage="Email field cannot be empty"
ControlToValidate="TB1" Text="*" />
<asp:RegularExpressionValidator ID="REV1" runat="server"
ErrorMessage="This is not a valid email"
ControlToValidate="TB1"
ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
Text="*" />
<br>
Password
<asp:TextBox ID="TB2" runat="server" TextMode="Password"/>
<asp:RequiredFieldValidator ID="RFV2" runat="server"
ErrorMessage="Password field cannot be empty"
ControlToValidate="TB2" Text="*" />
<asp:CompareValidator ID="CV1" runat="server" Text="*"
ErrorMessage="Passwords must be the same"
ControlToValidate="TB2" ControlToCompare="TB3" />
<br>
Repeate Password
<asp:TextBox ID="TB3" runat="server" TextMode="Password"/>
<br>
Your age (optional)
<asp:TextBox ID="TB4" runat="server" />
<asp:RangeValidator ID="RangeV1" runat="server"
ErrorMessage="Age must be in 10 to 80"
ControlToValidate="TB4" MaximumValue="80"
MinimumValue="10" Type="Integer" Text="*" />
<br>
<asp:Button ID="Button1" OnClick="Button1_Click"
runat="server" Text="Save" />
<br>
<asp:ValidationSummary ID="VS1" runat="server"
HeaderText="Some info is not correct" />
<br>
<asp:Label ID="Label2" runat="server" />
</form>
</body>
</html>
Вид страницы в браузере, когда введены некоторые неправильные значения, показан на рисунке 19.
Рис. 19. Страница с проверочными элементами управления