C# для профессионалов. Том II
Шрифт:
После нажатия на кнопку и появления текста проверьте снова исходный код HTML (пробелы добавлены для ясности)
В этот раз значение
Палитра элементов управления
В этом разделе мы кратко рассмотрим доступные элементы управления, прежде чем соберем их вместе в большом и более интересном приложении. Этот раздел поделен на элементы управления сервера Web и элементы управления проверкой достоверности. Обратите внимание, что в описаниях элементов упрaвлeния ссылка идет на "свойства", во всех случаях соответствующий атрибут для использования в коде ASP.NET называется идентично. Здесь представлены только наиболее часто используемые свойства.
Все элементы управления сервера Web наследуются из класса
Многие из часто используемых унаследованных свойств имеют дело со стилем вывода изображения с помощью таких свойств, как
Из событий мы, наверно, чаще всего будем использовать унаследованное событие
Существует множество других событий и свойств, многие из них мы обсудим более подробно позже, при рассмотрении специальных элементов управления. Список элементов управления сервера Web включает в себя:
Элемент управления | Описание |
---|---|
Label | Простой вывод текста, использует свойство Text для задания и программного изменения изображаемого текста. |
TextBox | Предоставляет текстовое окно, которое пользователи могут редактировать. Использует свойство Text для доступа к введенным данным и событие TextChanged для действия на изменениях при обратной отправке. Если требуется автоматическая обратная отправка (в противоположность использованию кнопки и т.д.), задайте свойство AutoPostBack как true. |
DropDownList | Позволяет пользователю выбрать один вариант из списка выбора либо непосредственно из списка, либо вводя первую букву или две. Использует свойство Items для задания списка позиций (это класс ListItemCollection , содержащий объекты ListItem ) и свойства SelectedItem и SelectedIndex для определения того, что выбрано. Событие SelectedIndexChanged может использоваться для выяснения, изменился ли выбор, и этот элемент управления имеет также свойство AutoPostBack , чтобы это изменение выбора включало операцию обратной пересылки. |
ListBox | Позволяет пользователю выбрать один или несколько элементов из списка. Задайте SelectionMode как Multiple или Single , чтобы определить, сколько элементов можно выбрать одновременно, и Rows , чтобы определить, сколько элементов показывать. Другие свойства и события такие же, как и у DropDownList . |
Image | Выводит изображение. Используйте ImageUrl для ссылки на изображение, и AlternateText для вывода текста, если изображение не может загрузиться. |
AdRotator | Выводит несколько изображений по очереди с выводом различных изображений после каждого обращения к серверу. Используйте свойство AdvertisementFile для определения файла XML, описывающего возможные изображения (подробности можно найти в MSDN) и событие ADCreated для выполнения обработки, прежде чем каждое изображение посылается назад. Можно также использовать свойство Target для указания открываемого окна, когда происходит щелчок мышью на изображении. |
CheckBox | Выводит флажок, который может быть установлен или не установлен. Состояние хранится в логическом свойстве Checked , а текст, связанный с полем флажка — в свойстве Text . Свойство AutoPostBack может использоваться для инициирования автоматической обратной отправки, а событие CheckedChanged — для действия при изменениях. |
CheckBoxList | Создает группу полей флажков. Свойства и события идентичны другим элементам управления списков, таким как DropDownList . |
RadioButton | Выводит кнопку, которая может быть включена или выключена. Обычно они группируются, так что только одна кнопка в группе может быть активной, используйте свойство GroupName для соединения элементов управления RadioButton в группу. Другие свойства и события, как в элементе управления CheckBox . |
RadioButtonList | Создает группу переключателей, где только одна кнопка в группе может быть выбрана в данный момент времени. Свойства и события — как в других элементах управления списками. |
Calendar | Позволяет пользователю выбрать дату на графическом изображении календаря. Этот элемент управления имеет множество свойств, имеющих отношение к стилю, но основная функциональность может быть получена с помощью свойств SelectedDate и VisibleDate (типа System.DateTime ), чтобы получить доступ к дате, выбранной пользователем и месяцу для вывода (который всегда будет содержать VisibleDate ). Ключевым событием для привязки является SelectionChanged . Обратная отправка из этого элемента управления выполняется автоматически. |
Button | Стандартная кнопка для нажатия пользователем. Использует свойство Text для текста и событие Click для ответа на нажатие (обратная отправка на сервер выполняется автоматически). Может также использовать событие Command для ответа на последовательные нажатия, что дает при получении доступ к дополнительным свойствам CommandName и CommandArgument . |
LinkButton | Идентичен Button , но выводит кнопку как гиперссылку. |
ImageButton | Выводит изображение, которое служит в качестве кнопки для нажатия. Свойства и события наследуются из Button и Image . |
HyperLink | Гиперссылка HTML. Задает место назначения с помощью NavigateUrl и текст для вывода с помощью свойства Text . Может также использовать ImageUrl в качестве ссылки для определения изображения для вывода и Target для определения используемого окна браузера. Этот элемент управления не имеет нестандартных событий, поэтому используйте вместо него LinkButton , если потребовалась дополнительная обработка при следовании по ссылке. |
Table | Определяет таблицу. Во время проектирования применяйте его в соединении с TableRow и TableCell или программным путем присваивайте строки с помощью свойства Rows , типа TableRowCollection .
Это свойство можно также использовать для изменений во время выполнения. Этот элемент управления имеет несколько свойств для стилей, специфических для таблиц, таких же, как в TableRow и TableCell . |
TableRow | Определяет строку внутри Table . Ключевым свойством является Cells , которое является классом TableCellCollection , содержащим объекты TableCell . |
TableCell | Определяет отдельную ячейку внутри TableRow . Используйте свойство Text для задания текста для вывода, Wrap — для определения, нужно ли сворачивать текст, и RowSpan и ColumnSpan для определения, какую часть таблицы занимает ячейка. |
Panel | Контейнер для других элементов управления. Можно использовать HorizontalAlign и Wrap для определения того, как организуется содержимое. |
Repeater | Используется для вывода данных из запроса данных, предоставляя большую гибкость с помощью шаблонов. Мы подробно рассмотрим этот элемент управления позже в этой главе. |
DataList | Аналогичен элементу управления Repeater , но имеет больше гибкости, когда необходимо организовать и отформатировать данные. Может, например, автоматически вывести таблицу, которую можно будет редактировать. Его мы также будем рассматривать позднее. |
DataGrid | Аналогичен Repeater и DataList с несколькими дополнительными возможностями, такими, как сортировка. Подробнее будет рассмотрен позже. |
Элементы управления проверкой достоверности предоставляют метод проверки достоверности ввода пользователя (в большинстве случаев) вообще без написания какого-либо кода. Когда инициируется обратная отправка, каждый элемент управления выполняет проверку, которую он подтверждает, и изменяет соответственно свое свойство
Однако элементы управления проверкой достоверности имеют вторую функцию. Они не только проверяют элементы управления во время выполнения, но могут также автоматически выводить пользователям полезные рекомендации. Если задать для свойства
Хранящийся в
В браузерах, которые это поддерживают, данные элементы управления создают клиентские функции JavaScript, чтобы упростить свое поведение по проверке. Это означает, что в некоторых случат обратная пересылка даже не происходит, так как элементы управления проверкой могут в некоторых ситуациях воспрепятствовать этому и вывести сообщения об ошибках без участия сервера.
Все элементы управления проверкой наследуют из класса
Мы скоро рассмотрим пример, но сначала кратко опишем различные элементы управления проверкой:
Элемент управления | Описание |
---|---|
RequiredFieldValidator | Используется для проверки, ввел ли пользователь данные в элемент управления, такой как TextBox . |
CompareValidator | Используется для проверки того, что введенные данные удовлетворяют простым требованиям, происходит сравнение с оператором set , использующим свойство Operator и свойство ValueToCompare . Operator может быть одним из Equal , GreaterThan , GraterThenEqual , LessThen , LessThenEqual , NotEqual или DataTypeCheck . Последний из них просто сравнивает тип данных ValueToCompare с данными в проверяемом элементе управления (ValueToCompare является строковым свойством, но интерпретируется как другой тип данных на основе своего содержимого). |
RangeValidator | Проверяет, что данные в элементе управления для проверки находятся между значениями свойств MaximumValue и MinimumValue . |
RegularExpressionValidator | Проверяет содержимое поля на основе регулярного выражения, хранящегося в ValidationExpression . Это может быть полезно для известной последовательности, такой как zip-коды, телефонные номера, IP-номера и т.д. |
CustomValidator | Применяется для проверки данных в элементе управления с помощью специальной функции. ClientValidationFunction используется для определения клиентской функции, используемой для проверки элемента управления (это означает, к сожалению, что мы не можем использовать C#). Эта функция должна возвращать логическое значение, указывающее, была проверка успешной или нет. Альтернативно можно взять событие ServerValidate для определения серверной функции, используемой для проверки. Эта функция является обработчиком событий с булевым типом, которая получает строку, содержащую данные для проверки вместо параметра EventArgs . Мы возвращаем true , если проверка проходит успешно, иначе false . |
Пример серверного элемента управления
Теперь мы разберем простой пример — пришло время взглянуть на более сложный сценарий. Давайте создадим каркас приложения Web — утилиту для заказа помещения для собраний. В данный момент он будет содержать только внешний интерфейс и простую обработку событий, позже мы расширим его с помощью ADO.NET и связывания данных, чтобы включить серверную бизнес-логику.
Форма Web, которую мы собираемся создать, будет содержать поля для имени пользователя, имени события, помещения для собраний и служителей вместе с календарем для выбора даты (предполагается в этом примере, что события продолжаются в течение полного дня). Используем элементы управления проверкой для всех полей, за исключением календаря, который будет проверяться на сервере и предоставлять дату по умолчанию в случае, если ничего не было введено.
Для тестирования интерфейса пользователя мы будем также иметь на форме элемент управления
Вначале создадим в Visual Studio новый проект приложения Web с именем