使用 AJAX 回调与 ASP.NET 用户控件

4
什么是实现需要AJAX回调的用户控件的最佳方法?
我想要实现以下几点:
- 在浏览器中完成的事件(例如,拖放)会触发一个可以引发控件事件的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

仅需做这个,其他代码应该在用户控件中。


注意,我尝试制作的控件比如自动完成等要具体得多。它们不存在于任何第三方库中,我真的需要能够自己制作它们。

2个回答

2

谢谢,那篇内容帮了我很大的忙。实际上这个功能并不是特别直观或强大(只允许一个参数(字符串)),这意味着我必须编写一个小型库来编码/解码字符串并让我模拟多个“函数”。但它确实可以工作,并且现在一切都包含在一个控件中。 - gregmac
1
给未来的人注意:虽然可以做到这一点,但如果您正在考虑这个问题,那么很可能意味着您应该放弃WebForms,使用MVC或类似框架自己进行网页开发。我现在正在重新编写上面的应用程序。我的观点是:WebForms试图假装Web具有状态,但Web并没有状态,因此一旦您在UI中执行任何超出拖放操作的操作,WebForms就会立即给您带来麻烦。 - gregmac

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接