четверг, 12 февраля 2009 г.

Пользовательское использование параметров __doPostBack

Иногда возникает необходимость выходить за документированные рамки технологии ASP при реализации той или иной функциональности. Например, при создании собственных управляющих элементов (user control), обладающих функциональностью AutoPostBack.
При использовании AutoPostBack в базовых управляющих элементах на странице генерируется следующий код:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}

Использование вызова __doPostBack(null, null) позволяет сделать из клиентской составляющей пользовательского управляющего элемента отсылку данных серверной составляющей. Если же одной PostBack отсылки не достаточно, целесообразно использовать аргументы функции:
  1. eventTarget- клиентский идентификатор инициализатора события в виде строки;
  2. eventArgument - какие-то параметры в виде строки.
Получить доступ из серверной составляющей к параметрам вызова __doPostBack возможно следующим способом:
  1. Page.Request.Params.Get( "__EVENTTARGET" ) - идентификатор инициализатора;
  2. Page.Request.Params.Get( "__EVENTARGUMENT" ) - параметры вызова.
Использование описанного механизма вкупе с сериализацией данных на стороне клиента и десериализацией на стороне сервера предоставляет разработчику аппарат создания собственных управляющих элементов довольно-таки гибкого поведения.