Состояние представления (вида). Модель событий Web-форм.
Любая информация, которая вводится в форму, "запоминается" Web-сервером. Это важное свойство Web-форм. Протокол передачи гипертекста HTTP не хранит информацию о состоянии формы. Иными словами, сохранение текущего состояния Web-формы происходит не автоматически, а должно быть запрограммировано. Информация о состоянии Web-формы называется состоянием представления, или состоянием вида (view state). ASP.NET может с помощью каркаса Framework автоматически сохранять состояние представления (вида) Web-формы. При этом используется "скрытый" элемент управления.
Для удобства восприятия, значительная часть длинного значения, которое описывает состояние представления формы, в приведенном ниже коде опущена.
<input type="hidden" name="_VIEWSTATE" value="dDw2M]kzODE3NTtOPDtsPGk8M]47P… +0z4+0z4=" />
Позже в этой главе мы рассмотрим другие возможности ASP.NET, используя которые можно управлять состоянием сеанса и состоянием приложения.
Модель событий Web-форм
С точки зрения программиста, модели событий Web-форм и Windows-форм очень похожи Именно благодаря этому сходству программирование Web-форм оказывается таким легким Но, по сути, события Web-форм сильно отличаются от событий Windows-форм Самое существенное отличие состоит в том, что события Web-форм инициируются клиентом, а обрабатываются сервером.
Мы уже создали простую форму Она состоит из одного текстового поля и одной кнопки Эта форма не обладает достаточным разнообразием элементов управления для того, чтобы подробно проиллюстрировать обработку событий. Представим себе форму, более насыщенную элементами управления. Пусть она содержит несколько текстовых полей, несколько списков, несколько флажков, кнопок и т.п. Поскольку полный обход (путешествие на сервер и обратно) стоит дорого, не каждое событие вызывает автоматическое обращение к серверу. Элементы управления сервера имеют внутренний набор событий сервера.
Возникновение таких событий приводит к автоматическому обращению к серверу. Наиболее часто из этих внутренних событий используется событие щелчка на кнопке. Другие события, например выбор элемента из списка, не приводят к немедленному обращению к серверу. Такого рода события накапливаются в буфере до тех пор, пока событие щелчка на кнопке не вызовет отправку "почтового" сообщения на сервер. Затем сервер обрабатывает различные события, изменяющие состояние формы, причем последовательность обработки событий произвольная. Наконец, после этого обрабатывается и событие щелчка на кнопке.