Непонятки с Ajax и WebControl
От: s_ihar  
Дата: 02.03.11 16:34
Оценка:
По проекту необходимо было написать WebControl – 2 кнопки а между ними контет. При нажатии по кнопкам происходит перелистывание контента. Все должно было работать под Ajax. В общем все как обычно, вроде ничего сложного:

public class VQueueView : CompositeDataBoundControl, ICallbackEventHandler, IPostBackEventHandler
{
// Здесь код… все как обычно
}

Контрол вроде бы работает нормально, как и нужно. Но вот вчера решил посмотреть под firebug-ом как он работает: просмотреть заголовок post и ответ сервера. И вот здесь натолкнулся на такую вот х… А именно:

В post вроде бы все как и нужно — __VIEWSTATE, __CALLBACKID, __CALLBACKPARAM, __EVENTVALIDATION и т.д

А вот в ответе вот такая херня:

496|/wEWOgLWgp6FBgLXr/yDCALar/yDCALZr/yDCALcr/yDCALbr/yDCALer/yDCALdr/yDCALgr/yDCALfr/yDCALXr7yDCALXr7iDCALXr8SDCALXr8CDCALXr8yDCALXr8iDCALXr9SDCALXr9CDCALXr9yDCALXr9iDCALar7yDCALar7iDCALar8SDCALar8CDCALar8yDCALar8iDCALar9SDCALar9CDCALar9yDCALar9iDCALZr7yDCAKj0L3MAQLFx/DLDgL0i5cMAtmi/fYFAojno7cHAo/1uKEKAubv8LcKAo/1sKEKAtmijfcFAoHZns0EArK+oNAHAtaJz/8LAqb2vc8EAqLV6NAKArGK45cBAqjqg4ELAqjqh5kJAvvkssYKAsaY4acKAvXitYYPAuHDx68NAs6x/LEHAqnLt5oOAtyygc8HAtyymc8HAtyygc8HAtyymc8H+YUkLDloLEjGZyD+1SCdipyUfBI=
и только потом разметка контента.

Откуда берутся эти иероглифы и как с ними бороться? !!!
Самое ужасное, что при каждом последующем нажатии по кнопке ответ растет, т.е таких иероглифов становиться больше (примерно на 0.1 Кбайт за запрос).

P.S Просмотрел внимательно что в таких случаях возвращает UpdatePanel. Там вроде бы ответ не растет, вот только всякой бороды типа ViewStat-а назад передается.

Самое интересное обнаружил потом: допустим кликаю по кнопке этого контрола раз так 20. Ответ увеличивается на 2 Кбайта по сравнению с первым ответом. Потом кликаю по другой кнопке на странице, которая является триггером для UpdatePanel-и (абсолютно левой не связанной с моим контролом). И о чудо!!! Кликаю снова по кнопке моего конрола и смотрю что размер ответа такой же как при первом нажатии (т.е обновление UpdatePanel че то там такое интересное сделала). Копался в коде js, обнулял там всякие __theFormPostData, смотрел цепочку вызовов после WebForm_DoCallback но путного ничего так и не нашел.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.