【发布时间】:2008-10-17 05:50:57
【问题描述】:
实现需要 AJAX 回调的用户控件的最佳方式是什么?
我想完成几件事:
- 在浏览器中完成事件(例如,拖放)会触发 AJAX 通知,该通知可以引发控件事件,这会导致页面上使用控件的代码执行它需要执行的任何操作(例如,更改一个数据库)。
- 进行部分更新(不使用更新面板),可以执行诸如在文本框下方填充自动完成下拉菜单之类的操作。
- 实现一个足够通用的用户控件,可以在多个页面上重复使用
- 避免必须在页面本身上实现将事件传递回控件的逻辑,因为这是重复的且难以维护
我对大多数客户端的东西都使用 jQuery,但对于实际的 AJAX 调用,我并不关心它是 jQuery 还是 ASP AJAX 库。
实际上最完美的是用户控件上的 PageMethods,它可以很容易地从客户端脚本调用。不幸的是,据我所知,pagemethods 不适用于用户控件。
我将以自动完成控件为例:
我应该可以将自动完成控件放在页面上,然后在页面代码中,有 eg:
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
什么也不做......其余的代码应该在用户控件中。
请注意,我尝试制作的控件比自动完成功能更具体。它们不存在于任何 3rd 方库中,我真的需要自己制作它们。
【问题讨论】: