Здравствуй, Хабр!
Хочу поделиться своим опытом решения проблемы, ответа на которую я трудно найти в Интернете (русскоязычном — уж точно).
Столкнулся я недавно с тем, что мне было поручено написать ASP.NET AJAX контрол серверной стороны. Это такой контрол, который доступен при редактировании страницы ASP.NET в дизайнере (toolbox), часть логики его находится на сервере, а часть на клиенте, взаимодействие происходит аяксово. Суть работы моего контрола — простой ComboBox, который получал бы данные динамически с сервера (предполагается, что данных так много, что загрузить их все разом нельзя), а также фильтровал бы список на основании введенных в текстовое поле символов. Это почти реализовано в AJAX Control Toolkit, только список там грузится целиком.
В интернете довольно много различных статей и блогов по теме создания своих контролов, однако, как ни странно, все они ограничиваются простенькими примерами, в которых напрочь отсутствует описание механизма взаимодействия клиента и сервера. Большинство источников приводит цитаты из стандартных микрософтовских учебников, где аякс заключается в том, что при наведении мышки на кнопку та меняет свою картинку (дет. сад). Мне же надо было, чтобы в список на клиенте подтягивались данные из списка, который хранился на сервере (это может быть просто список, какой-либо ORM и вообще все, что бывает IEnumerable).
Сразу хочу сказать, что здесь Вы не найдете мануала по созданию собственного контрола с нуля, благо по этой части документации хватает. Я же опишу, как сделать так, чтобы клиентская часть и ее серверная половинка могли свободно обмениваться информацией в асинхронном режиме.
Хочу поделиться своим опытом решения проблемы, ответа на которую я трудно найти в Интернете (русскоязычном — уж точно).
Столкнулся я недавно с тем, что мне было поручено написать ASP.NET AJAX контрол серверной стороны. Это такой контрол, который доступен при редактировании страницы ASP.NET в дизайнере (toolbox), часть логики его находится на сервере, а часть на клиенте, взаимодействие происходит аяксово. Суть работы моего контрола — простой ComboBox, который получал бы данные динамически с сервера (предполагается, что данных так много, что загрузить их все разом нельзя), а также фильтровал бы список на основании введенных в текстовое поле символов. Это почти реализовано в AJAX Control Toolkit, только список там грузится целиком.
В интернете довольно много различных статей и блогов по теме создания своих контролов, однако, как ни странно, все они ограничиваются простенькими примерами, в которых напрочь отсутствует описание механизма взаимодействия клиента и сервера. Большинство источников приводит цитаты из стандартных микрософтовских учебников, где аякс заключается в том, что при наведении мышки на кнопку та меняет свою картинку (дет. сад). Мне же надо было, чтобы в список на клиенте подтягивались данные из списка, который хранился на сервере (это может быть просто список, какой-либо ORM и вообще все, что бывает IEnumerable).
Сразу хочу сказать, что здесь Вы не найдете мануала по созданию собственного контрола с нуля, благо по этой части документации хватает. Я же опишу, как сделать так, чтобы клиентская часть и ее серверная половинка могли свободно обмениваться информацией в асинхронном режиме.