Следует помнить, что ASP.NET генерирует функцию __doPostBack() автоматически. Этот код расширяется при добавлении к странице большего количества элементов управления AutoPostBack, поскольку данные о событиях должны быть установлены для каждого элемента управления.
Наконец, любой элемент управления, свойство AutoPostBack которого установлено равным true, соединяется с функцией __doPostBack () с использованием атрибута onClick или onChange. Эти атрибуты указывают на то, какое действие следует выполнить браузеру в ответ на клиентские JavaScript-события onClick и onChange.
В следующем примере показан дескриптор элемента управления списком lstCountry, выполняющий автоматическую обратную отсылку. Каждый раз, когда пользователь меняет выбор в списке, генерируется клиентское событие onChange. Затем браузер вызывает функцию __doPostBack(), посылающую страницу серверу.
Другими словами, ASP.NET автоматически изменяет клиентское событие JavaScript на серверное событие ASP.NET с использованием функции __doPostBack() в качестве посредника. Если вы опытный разработчик на ASP, то вы наверняка создавали вручную подобное решение для традиционных Web-страниц. ASP.NET обрабатывает эту информацию автоматически, значительно упрощая ситуацию.
Совет. Следует помнить, что ASP.NET включает две модели управления: простые серверные элементы управления HTML и более полнофункциональные элементы управления Web. Автоматическая обратная отсылка доступна только для элементов управления Web.
Последним ингредиентом модели ASP.NET является новый механизм состояния вида. Состояние вида решает другую проблему, возникающую из-за отсутствия поддержки состояния у HTTP — утерю изменений.
Каждый раз, когда ваша страница отправляется обратно, вы получаете всю
информацию, введенную пользователем в любом элементе управления <input>
дескриптора <form>. Затем ASP.NET загружает Web-страницу в ее исходном
состоянии (на основании ее компоновки и определенных вами установок по умолчанию)
и настраивает страницу в соответствии с этой новой информацией. Проблема
состоит в том, что в динамической Web-форме ваш код может внести намного больше
изменений. Например, вы можете программно изменить цвет заголовка,
модифицировать фрагмент статического текста, скрыть или отобразить панель элементов
управления или даже связать целую таблицу данных с сеткой. Все эти действия
изменяют страницу по сравнению с ее исходным состоянием. Однако ни одно из
них не отображается в возвращаемых данных формы. Это означает, что
информация будет теряться после каждой обратной отсылки. Обычно отсутствие
состояний компенсируется использованием простых cookie-наборов, cookie-наборов,
основанных на сеансах, и различных других обходных путей. Все эти механизмы
требуют применения специальных (и иногда весьма тщательных) измерений.
С целью снятия этого ограничения в ASP.NET разработан свой собственный интегрированный механизм преобразования состояний в последовательную форму (сериализации состояний). По сути дела, как только выполнение кода вашей страницы завершается (перед генерацией и отправкой клиенту окончательного HTML), ASP.NET исследует свойства всех элементов управления вашей страницы.
предыдущая следующая страница оглавление
108