Nic*_*ick 14 asp.net ajax jquery
根据我的理解,它们都基本上做同样的事情(让我们从JS执行服务器端方法).有什么不同吗?
此外,Ajax页面方法可以使用JQuery或使用ScriptManager实现.哪个是首选,为什么?
**BOUNTY:添加赏金以获得对问题的清晰解释.谢谢**
Jef*_*nal 22
从根本上说,客户端回调和Ajax页面方法正在做同样的事情.他们使用一个XMLHttpRequest对象向某个URL发送请求(通常是异步的),获取该请求的结果,然后执行您提供的回调方法(使用小写c 回调),将请求的结果传递给您的方法.
话虽如此,这两种方法之间有一个很大的区别:
页面方法在页面上以静态方法的形式实现.您的页面类只是这些方法的一个方便容器,它们可以真正托管在任何地方(Web服务,自定义HttpHandler等).由于不会构建任何实例,因此客户端不必发送ViewState数据,Asp.Net也不必运行Page生命周期.另一方面,您无权访问Page类的实例方法和属性.但是,在许多情况下,您可以通过将实例方法重构为静态方法来解决此问题.(有关更多信息,请参阅此文章.)
客户端回调在页面上实现为实例方法.他们可以访问您网页上的其他实例方法,包括存储在其中的内容ViewState.这很方便,但需要付出代价:为了构建Page实例,客户端必须向服务器发送相对大量的数据,并且必须在页面生命周期的相当一部分中运行.(这篇文章有一个很好的图表显示哪些部分.)
除此之外,设置它们的成本差别很大,客户使用它们的方式不同:
客户端回调需要大量与Asp.Net紧密耦合的特殊脚手架代码(如上面的链接所示).鉴于我们现在拥有的更容易的替代方案,我很想说这项技术已经过时(对于新开发).
使用ScriptManager调用页面方法
所需的设置少于客户端回调:您只需弹出一个ScriptManager页面,设置EnablePageMethods = true,然后通过代理代理访问您的页面方法PageMethods.
使用jQuery调用页面方法只需要链接jQuery库(当然也熟悉jQuery).
我更喜欢使用jQuery来访问页面方法,因为它独立于服务器框架并且只暴露了适当数量的实现细节,但这只是一个品味问题.如果你使用ScriptManager它,它的代理使得页面方法调用在眼睛上更容易,有些人可能认为更重要.
| 归档时间: |
|
| 查看次数: |
8484 次 |
| 最近记录: |