Если вы знакомы с формами HTML, то вы знаете, что основным способом отправки страницы является щелчок на кнопке Submit. Если вы используете стандартные серверные элементы управления HTML, это является единственной возможностью. Однако когда страница отсылается обратно, ASP.NET может одновременно генерировать другие события (а именно события, указывающие на изменение значения в элементе управления вводом).
Конечно, этого недостаточно для построения полнофункциональной Web-формы. К счастью, элементы управления Web ASRNET дополняют эту модель средством автоматической обратной отсылки. С помощью этого средства, элементы управления вводом могут генерировать различные события, на которые ваш серверный код может немедленно отвечать. Например, вы можете инициировать обратную отсылку, когда пользователь щелкает на флажке, меняет выбор в списке либо изменяет текст в текстовом поле, а затем переходит на другое поле. Эти события не являются такими же модульными, как события в Windows-приложении, однако они представляют собой значительный шаг вперед по сравнению с кнопкой Submit.
Для использования автоматической обратной отсылки вам просто понадобится установить свойство Web-элемента управления AutoPostBack в значение true (значением по умолчанию является false, что обеспечивает оптимальный режим работы при отсутствий необходимости реакции на событие изменения). При этом ASP.NET использует клиентские возможности JavaScript для заполнения пробелов между клиентским и серверным кодом.
Это происходит следующим образом: при создании Web-страницы, содержащей один или несколько элементов управления Web, которые конфигурируются для использования AutoPostBack, ASP.NET добавляет к измененной странице HTML JavaScript-функцию под именем __doPostBack(). При вызове она генерирует oбратную отсылку, отправляя страницу обратно Web-серверу со всей информацией формы.
ASP.NET также добавляет два скрытых поля ввода, используемые функцией __doPostBack() для возврата информации серверу. Эта информация состоит из идентификатора элемента управления, инициировавшего событие и любых дополнительных сведений. Поля изначально пусты, как показано ниже:
<input type="hidden" name="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" value="'" />
Функция __doPostBack() отвечает за установку этих значений в соответствующую информацию о событии и последующую отправку формы. Ниже представлен пример функции __doPostBack():
<script language="javascript">
<!-—
function __doPostBack(eventTarget, eventArgument) {
var theform = document.Form1;
theform.__EVENTTARGET.value = eventTarget;
theform.__EVENTARGUMEMT.value = eventArgument;
theform.submit();
}
//-—>
</script>
предыдущая следующая страница оглавление
107