ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
Первым шагом при этом является добавление ValidationSummary в файл *.aspx. Дополнительно можно установить свойство HeaderText этого типа, а также значение DisplayMode, которое по умолчанию задает представление сообщений об ошибках в виде списка с буллитами.
Затем для каждого элемента контроля
Наконец, если требуется отобразить сообщения об ошибке с помощью MessageBox клиента, то установите для свойства ShowMessageBox значение true (истина), а для свойства ShowSummary – значение false (ложь).
Исходный код. Проект ValidatorCtrls размещен в подкаталоге, соответствующем главе 23.
Резюме
Создание Web-приложений требует иного подхода по сравнению с тем, который иcпользуется для создания "традиционных" приложений. В начале этой главы был предложен краткий обзор фундаментальных составляющих Web-разработки, к которым можно отнести HTML, HTTP, сценарии клиента и сценарии сервера при использовании классической технологии ASP.
Значительная часть главы была посвящена рассмотрению архитектуры страницы ASP.NET. Вы увидели, что с каждым файлом *.aspx в проекте связан некоторый класс, производный от System.Web.UI.Page. С помощью такого подхода ASP.NET позволяет строить более пригодные для многократного использования системы, соответствующие принципам ООП. В этой главе рассматривалась также использование шаблонов страниц и различных Web-элементов управления (включая новые типы GridView и Wizard). Вы могли убедиться в том, что эти элементы графического интерфейса отвечают за создание подходящих дескрипторов HTML-кода, направляемого клиенту. Элементы контроля ввода являются серверными элементами, на которые возлагается задача подготовки JavaScript-кода клиента для выполнения проверки допустимости введенных в форму данных, чтобы уменьшить количество необходимых обращений к серверу.
ГЛАВА 24. Web-приложения ASP.NET 2.0
Предыдущая глава была посвящена композиции страниц ASP.NET и поведению содержащихся в них Web-элементов управления. На основе полученных знаний в этой главе мы рассмотрим роль типа HttpApplication. Вы увидите, что функциональные возможности HttpApplication позволяют выполнять перехват ряда событий, что дает возможность рассматривать Web-приложения, скорее, как связную единицу, а не как набор автономных файлов *.aspx.
В дополнение к исследованию типа HttpApplication в этой главе также обсуждается важная тема управления состоянием объектов. Здесь вы узнаете о роли данных состояния представлений и элементов управления, о переменных уровня сеанса и приложения, а также о связанной с состояниями конструкции ASP.NET, которая называется кэш приложения. После основательного изучения предлагаемых платформой .NET
Проблема состояния
В начале предыдущей главы было указано, что HTTP является сетевым протоколом, не обеспечивающим сохранение состояний. Именно этот факт делает процесс разработки Web-приложений столь отличающимся от процесса построения выполняемого компоновочного блока. Например, при создании приложения Windows Forms вы можете быть уверены в том, что любые члены-переменные, определенные в классе формы, будут существовать в памяти до тех пор, пока пользователь не прекратит работу выполняемого файла.
Однако в World Wide Web вы не можете делать такие роскошные предположения. Чтобы не быть голословными, давайте создадим новый Web-узел ASP.NET (с именем SimpleStateExample), содержащий один файл *.aspx. В файле с внешним кодом поддержки определим строковую переменную уровня страницы с именем userFavoriteCar.
Далее, построим Web-интерфейс пользователя, показанный на рис. 24.1.
Рис. 24.1. Пользовательский интерфейс для страницы примера состояния
Обработчик события Click сервера для кнопки Указать… позволит назначить строковую переменную в соответствии со значением TextBox:
а обработчик события Click для кнопки Прочитать… будет отображать текущее значение члена-переменной в поле элемента Label страницы.
При построении приложения Windows Forms можно предполагать, что после установки пользователем начального значения это значение будет сохраняться в течение всего времени работы приложения. Запустив наше Web-приложение, вы, к сожалению, обнаружите, что при каждом вторичном обращении к Web-серверу значение строковой переменной userFavoriteCar снова возвращается в своему пустому начальному значению, так что поле текста Label будет постоянно оставаться пустым.