是否有理由更喜欢jQuery.Ajax到asp.net UpdatePanel?

时间:2010-07-20 12:24:18

标签: asp.net jquery updatepanel

如果我正在开发一个asp.Net应用程序,有些情况下我应该忘记MS Ajax UpdatePanels并且更喜欢使用jQuery.Ajax更新我页面的某些部分吗?

谢谢

5 个答案:

答案 0 :(得分:10)

是的,事实上,您应该几乎总是更喜欢使用您自己的(或jQuery的)ajax功能。

与MS Ajax UpdatePanel相关的很多开销(它执行完整的回发,然后更新页面上已更改的元素),因此它具有很好的功能。支持AJAX的网站 - 响应性,连续性等 - 几乎完全丢失(恕我直言)。您几乎无法控制通过电缆实际提交的内容,返回的内容以及返回客户端后如何处理。

另一方面,使用jQuery Ajax,您可以获得完整的即时控制,您可以根据需要制作轻量级(或重型)请求,让我们面对它 - API在任何情况下都不会更难使用而不是UpdatePanel。

考虑到这一点,仍然存在UpdatePanel很好甚至更好的情况。特别是在ASP.NET WebForms中,如果用户不能使用javascript,以一种优雅降级的方式返回页面的一部分可能会很棘手,并且对于快速的“拖放”开发风格,确实存在没有办法jQuery可以竞争。 (无论你是否喜欢拖放式开发,都是一个完全不同的讨论......)

答案 1 :(得分:2)

当然, 恕我直言,你应该更喜欢jQuery而不是标准的ASP.Net更新面板。 原因(主要)是性能,当您使用jQuery.ajax发布一些数据时,您只发布服务器需要了解帖子的内容。 这通常是1-2个文本参数。

当您使用更新面板执行相同的帖子时,整个页面会在幕后走到服务器,然后整个页面返回并呈现区域。

如果你使用jQuery,你可以在服务器上创建一个ashx页面,这个页面没有常规webform的页面加载和生命周期,而且它也非常轻量级。

答案 2 :(得分:2)

我会说你绝对应该支持jQuery AJAX而不是ASP.NET AJAX UpdatePanel。如果你看一下ASP.NET AJAX site,真的没有提到ASP.NET AJAX和/或UpdatePanel ......但是有很多提到jQuery。事实上,微软似乎倾向于使用jQuery作为UpdatePanel上的客户端JavaScript AJAX框架和相关的ASP.NET AJAX控件的ASP.NET开发人员。

他们仍然提供了AJAX Control Toolkit的链接,但是有很多jQuery插件,你为什么需要Toolkit?

UpdatePanel更慢,更笨重 - 使用jQuery AJAX。

答案 3 :(得分:1)

如果你对整个ASP.Net回发方案感到满意,坚持这种控制的一个好处是(大多数时候)它们可以保护你免受回发等方面的影响。但在这种特定情况下,它会带来成本:每个AJAX请求都有一个完整的回发(包括视图状态),与直接的AJAX请求相比,这可能是性能损失,参见:

http://geekswithblogs.net/dlussier/archive/2007/09/06/115188.aspx

我也不确定它是否处理好跨站请求(JSONP等),所以这些是需要考虑的两个注意事项。

答案 4 :(得分:0)

正如其他人所说,MS-Ajax和UpdatePanels表现不佳 - 有时甚至无法使用。正如其他人所指出的那样,ajax回调应该是小而且轻量级,很重,因为它们还包含完整的ViewState。

除了这些问题,我还发现了MS-Ajax的其他一些缺点:

  1. MS生成的javascript包含很多开销。他们已经内置了大量的类型检查和变量检查,我的意图是让他们的javascript更加类型安全。这种开销显着减慢了浏览器端的处理速度 - 尤其是当重复/递归调用那些生成的javascript函数时(如某些第三方控件的情况)。
  2. ASPX代码隐藏变得更加复杂和难以维护,因为正在为页面的初始加载执行相同的页面生命周期,以及每个单独的ajax回调。像所有复杂的代码一样,熟练的开发人员和良好的代码注释可以克服这一点 - 但它仍然是一个缺点。
  3. 最后一点:MS-Ajax& amp; UpdatePanels,你可以逃脱90%javascript无知,仍然编码他们。 “传统”ajax涉及比MS-Ajax更多的javascript编码。