此外,Ajax页面方法可以使用JQuery或使用ScriptManager来实现.哪一个是首选,为什么?
** BOUNTY:添加赏金以明确说明问题.谢谢 **
话虽如此,两种方法有很大的区别:
>页面方法作为您的页面上的静态方法实现.你的页面类只是一个方便的容器,这些容器可以真正地托管在任何地方(一个Web服务,一个自定义的HttpHandler等).由于不会构建任何实例,因此客户端不必发送ViewState数据,Asp.Net不必运行该页面的生命周期.另一方面,您无权访问您的Page类的实例方法和属性.但是,在许多情况下,您可以通过将实例方法重构为静态方法来解决此问题. (有关更多信息,请参阅this article)
>客户端回调在您的页面上实现为实例方法.
他们可以访问您的页面上的其他实例方法,包括存储在ViewState中的内容.这是方便的,但是有一个代价:为了构建页面实例,客户端必须向服务器发送相对大量的数据,并且必须通过一个公平的页面生命周期来运行. (This article has a nice diagram显示哪些部分.)
除此之外,设置它们的成本差异很大,客户使用它们不同:
>客户端回拨需要相当数量的特殊脚手架
与Asp.Net紧密耦合的代码(如上面的链接所示).特定
我们现在更容易的替代方案,我很想说这种技术已经过时了(为了新的发展).
>使用调用页面方法
ScriptManager需要比客户端回调更少的设置:您只需要
将ScriptManager弹出到您的
页面,设置EnablePageMethods = true,
然后通过代理PageMethods代理访问您的页面方法.
>使用jQuery调用页面方法只需要你链接jQuery库(当然也熟悉jQuery).
我更喜欢使用jQuery来访问页面方法,因为它独立于服务器框架,并且暴露出恰当的实现细节数量,但这只是一个问题.如果您使用ScriptManager,它的代理使页面方法调用更容易一些眼睛,哪些可能会更重要.