什么是实现需要AJAX回调的用户控件的最佳方法?
我想要实现以下几点:
- 在浏览器中完成的事件(例如,拖放)会触发一个可以引发控件事件的AJAX通知,这将导致使用控件的页面上的代码执行所需的操作(例如,在数据库中更改值)。 - 有部分更新(不使用UpdatePanel),可以执行诸如在文本框下面填充自动完成下拉列表之类的操作。 - 实现单个用户控件,该控件足够通用,可以在多个页面上重复使用。 - 避免在页面本身上实现传递事件回到控件的逻辑,因为这是重复且难以维护的。
我在大多数客户端方面使用jQuery,但是对于实际的AJAX调用,我并不在意是使用jQuery还是ASP AJAX库。
完美的解决方案是在用户控件上使用PageMethods,并且可以轻松地从客户端脚本中调用。不幸的是,据我所知,PageMethods无法在用户控件上工作。
以自动完成控件为例:
我应该能够将自动完成控件放在页面上,然后在页面代码中,例如:
我想要实现以下几点:
- 在浏览器中完成的事件(例如,拖放)会触发一个可以引发控件事件的AJAX通知,这将导致使用控件的页面上的代码执行所需的操作(例如,在数据库中更改值)。 - 有部分更新(不使用UpdatePanel),可以执行诸如在文本框下面填充自动完成下拉列表之类的操作。 - 实现单个用户控件,该控件足够通用,可以在多个页面上重复使用。 - 避免在页面本身上实现传递事件回到控件的逻辑,因为这是重复且难以维护的。
我在大多数客户端方面使用jQuery,但是对于实际的AJAX调用,我并不在意是使用jQuery还是ASP AJAX库。
完美的解决方案是在用户控件上使用PageMethods,并且可以轻松地从客户端脚本中调用。不幸的是,据我所知,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
仅需做这个,其他代码应该在用户控件中。
注意,我尝试制作的控件比如自动完成等要具体得多。它们不存在于任何第三方库中,我真的需要能够自己制作它们。