Создание контрола UserControl с использованием ICallback
От: Sigura  
Дата: 12.01.07 18:40
Оценка:
При создании контрола UserControl с вложенным UserControl использующий ICallbackEventHandler.

Возникла проблема с получением результата из WebForm_DoCallback.

Что видно в дебагере
1. Данные приходят с клиента в RaiseCallbackEvent
2. Данные уходят из GetCallbackResult
3. Бардак начинается в работе JS в WebForm_ExecuteCallback внутри WebResource.axd

Тест №1 убираем вложенность контролов, то есть остаётся UserControl использующий ICallbackEventHandler.
Получаем строчку со стороны сервера в WebForm_ExecuteCallback:

response = "180|/wEWEwKZopG2CQLAiqaJBgLzqv7QCwLOn/M3At/O3pILAoLe678KAvKBq8kHAozftNAIAvPN20EC9JOGvQkCiM/EkwsC387akwsCgt7n3woC8oGvygcC/97AcwLzzc9hAvST+twJAojPuLMLApzU2+oFvWBOUE5goR/8U0t9TqACB780EXA=ctl00_CentralForm_txt2_lbl||ctl00_CentralForm_txt2_hidden||1||vi_txt2||6||Location" not found
всё работает.

Тест №2 создаём контрол UserControl с вложенным UserControl использующий ICallbackEventHandler.
Получаем строчку со стороны сервера в WebForm_ExecuteCallback:

response = "__EVENTTARGET = <br />__EVENTARGUMENT = <br />__VIEWSTATE = /wEPDwUKMTQ3NDgxNDMzNA9kFgJmD2QWAgIDD2QWAgIDD2QWAmYPZBYCAgMPZBYCAgEPFgIeCWlubmVyaHRtbAUJa3JlbmRlbGVrZGTNZbDPUPVjMhRNCmpRKfo7wrMnew==<br />ll_loc_0$txt = ll_loc_0$hidden = 1ll_loc_0$txtCountry = Russia<br />ll_loc_0$txtRegion = <br />ll_loc_0$txtCity = <br />ll_loc_0$txtVenue = <br />__CALLBACKID = ctl00$CentralForm$cbm<br />__CALLBACKPARAM =0|ll_loc_0_lbl][ll_loc_0_hidden][6][1][vi_ll_loc_0][wertewrt<br />__EVENTVALIDATION = /wEWCgLNxcbFCQLAiqaJBgK93YL8CALJtdf7DQKYmtbHCALwxoE3AuvMvLQCAuPqvqYOAu6a2PsCApzU2+oFRf3GjpbskRQS+Ul+WP09eu/0MCg=<br />0|ll_loc_0_lbl][ll_loc_0_hidden][1][vi_ll_loc_0][6][Location not found"

Падает внутри WebResource.axd в WebForm_ExecuteCallback на строчке:
var validationField = response.substring(separatorIndex + 1, separatorIndex + validationFieldLength + 1);
т.к. validationFieldLength есть NaN т.к.
var validationFieldLength = parseInt(response.substring(0, separatorIndex));
и двумя строчками выше пытается распарсить длину
var separatorIndex = response.indexOf("|");

проблема судя по всему специфичная, но если необходимо можем запостить сырцы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.