【问题标题】:Alternatives to UpdatePanel on a user control (ASCX page)用户控件上 UpdatePanel 的替代品(ASCX 页面)
【发布时间】:2010-03-25 19:43:06
【问题描述】:
我目前正在开发一个 ASP.NET AJAX 应用程序。出于明显的原因决定不使用 UpdatePanels,我有什么替代方案?此应用程序具有动态构建的页面,因此页面的大部分或所有组件都作为用户控件存在。
我需要从 ASCX 用户控制页面进行 AJAX 调用。由于 ASCX 用户控件可能不包含页面方法,我还有哪些其他选项?
或者,有没有办法在 ASCX 页面中使用页面方法?
【问题讨论】:
标签:
c#
ajax
user-controls
updatepanel
【解决方案1】:
你不能像你说的那样从UserControl 调用 webmethods。原因是标有WebMethod 属性的方法也必须是静态的。用户控件不支持这一点。如果您不愿意使用UpdatePanel,那么您没有太多选择。
您可以通过 jQuery 向web services 进行AJAX 调用吗?这将是一种选择...
UpdatePanel 控件与UpdateMode="Conditional" 一起使用可以让您很好地控制回调发生的情况,并且仍然是一个合理的解决方案。它不会像直接的 ajax 调用那样轻巧,但易于维护等。
【解决方案2】:
jQuery AJAX 是我的推荐,与 Web 服务一起使用提供了一个不错的解决方案。
【解决方案3】:
(我发现的)最好的方法是
1. 将您的 PageMethods 放在父页面上
2.当PageMethod完成后,通过JS方法让你的用户控件知道PageMethod调用已经完成
3.然后可以在用户控件上实现一个ICallbackHandler,对用户控件的方法进行AJAX回调
在我的例子中,我需要在 PageMethods 执行后更新用户控件上的一些值,所以我使用 HtmlOutputWriter 构建我的用户控件来更新内容。
为我工作!