【问题标题】:Using AJAX callbacks with ASP.NET User controls将 AJAX 回调与 ASP.NET 用户控件一起使用
【发布时间】: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 方库中,我真的需要自己制作它们。

【问题讨论】:

    标签: asp.net jquery ajax


    【解决方案1】:

    考虑在您的页面中实现 ICallbackEventHandler - 这是一种从 JavaScript 回调页面函数的简单方法。

    这是一个很好的教程:

    http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=119

    【讨论】:

    • 谢谢,这让我继续前进。它并不是那么直观或强大(实际上只允许一个参数(字符串)) - 这意味着我必须编写一个小库来编码/解码字符串并让我模拟多个“函数”。但它确实有效,现在一切都在一个控件中自包含
    • 未来的人们请注意:这样做是可能的,但如果你正在考虑这样做,这可能意味着你应该放弃网络表单并自己做你的网络工作,使用 MVC 或类似的框架。我现在实际上正在重写上述应用程序。我的想法; webforms 试图假装 web 有状态,但 web 没有状态,因此 webforms 总是会给你带来麻烦,只要你在 UI 中进行拖放操作。
    【解决方案2】:

    您可能想结帐; Ra-Ajax UserControl Sample 并将这些知识与 Ra-Ajax Drag and Drop 结合起来

    点击左侧的“显示代码”C#图标,查看代码的用法...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多