Каков наилучший способ реализации пользовательских элементов управления, требующих обратных вызовов AJAX?
Я хочу сделать несколько вещей:
- У событий, выполняемых в браузере (например, перетаскивание), запускается уведомление AJAX, которое может вызвать событие элемента управления, в результате чего код на странице, используя элемент управления, выполняет все, что ему нужно (например, изменяет значение база данных).
- Имеют частичные обновления (НЕ используя панель обновления), которые могут выполнять такие вещи, как заполнение выпадающего списка автозаполнения под текстовым полем.
- Реализация единого пользовательского элемента управления, который достаточно универсален для повторного использования на нескольких страницах
- Избегайте необходимости реализовывать логику на самой странице, которая передает события обратно в элемент управления, потому что это повторяется и трудно поддерживать
Я использую jQuery для большей части клиентской части, но для реальных вызовов AJAX меня не волнует, являются ли они jQuery или ASP AJAX-библиотеками.
По сути, то, что было бы идеально, - это PageMethods в пользовательском элементе управления, который можно легко вызывать из клиентского скрипта. К сожалению, насколько мне известно, методы страницы не работают с пользовательскими элементами управления.
В качестве примера я буду использовать элемент управления автозаполнением:
Я должен иметь возможность поставить элемент управления автозаполнением на странице, а затем в коде страницы, например:
Public Sub HandleLookup(ByVal input As String, ByRef list As List(Of String) Handles MyControl.LookupEntries
list = New List(Of String)
' Query database for list of items..
For Each item as String in FullItemList
If item.StartsWith(input) then list.Add(item)
Next
Return list
End Sub
И больше ничего не делать .. Остальной код должен быть в usercontrol.
Обратите внимание, что элементы управления, которые я пытаюсь сделать, гораздо более специфичны, чем, например, автозаполнение. Они не существуют ни в каких сторонних библиотеках, и мне действительно нужно иметь возможность создавать их самостоятельно.