Joh*_*ter 33

我个人更喜欢jQuery,原因如下: -

  1. 插件社区更加多样化,吸引了众多开发人员(不仅仅是MS堆栈).对于MS-AJAX,您现在非常关注UI小部件的客户端AJAX控件工具包.
  2. 我发现jQuery API远比MS AJAX提供的常用客户端任务更适用
  3. 鉴于在MVC中缺少WebForms烟雾和镜像,你有时需要对DOM进行一定程度的控制来完成某些事情,jQuery提供的CSS选择器引擎确实可以帮助你做到这一点.

就MS AJAX在MVC中为您提供的内容而言,它可以为您提供快速的"AJAXify"表单和链接,但就我而言,我需要添加价值90kb的javascript来实现这一点.当jQuery中的等效调用(例如$ .get,$ .post,$(element).load)相对容易使用时,这并不值得.


Ste*_*ock 18

就个人而言,尽管HtmlHelper支持ASP.NET Ajax,我发现jQuery ajax与JQuery表单插件一起成为在ASP.NET MVC中执行ajax表单帖子的最佳方式.

例如,在html产品列表页面上使用jquery调用,每个产品的表单允许将项目添加到购物篮中,单行jquery代码可以"ajaxify"页面上的所有表单

$(".productListItem form").ajaxForm({ target: '#extraInfoSection' });
Run Code Online (Sandbox Code Playgroud)

结合检查标头的控制器基类上的简单"IsAjaxRequest"属性:

Request.Headers["X-Requested-With"] == "XMLHttpRequest"
Run Code Online (Sandbox Code Playgroud)

和Controller中的一些逻辑返回正确的响应类型:

return IsAjaxRequest ? (ActionResult) View("BasketPartial", basket) : new RedirectBackToReferrerActionResult();
Run Code Online (Sandbox Code Playgroud)

你有一个表格即使关闭javascript工作,并没有涉及ASP.NET Ajax.

  • 这是否适用于服务器端验证? (3认同)

Dav*_*ins 9

我建议您阅读Dave Ward的博客Encosia而不是提出建议,该博客在MS Ajax/Update Panel和jQuery post机制上有一系列帖子.Dave坚持认为jQuery的性能非常优越,因为它从服务器的传输中减少了大约100K.

  • 这些帖子更关注WebForms而不是MVC.该帖子中提到的100k节省通常是与UpdatePanel一起使用的垃圾(ViewState是Delta等).在MVC中,沿着线路来回传递的内容应该大致相同(它只是XmlHttpRequest上方的抽象不同). (6认同)
  • 自从最初提出这个问题以来,我想根据我所学到的内容添加对这个对话的评论.即使MVC不使用WebForms,它仍然为其ViewEngine构建Control层次结构,因为它依赖于ASP.NET ViewEngine.因此,我想说Dave Ward提到的开销仍然有些适用.由于没有ViewState等,数字可能会更低.但是一些开销仍然存在,除非你用Spark之类的东西替换ASP.NET ViewEngine,那么绝对没有...... (4认同)
  • 我觉得我将迁移到MVC,因为我发现WebForms令人沮丧,因为它似乎有很多箍来实现高级Ajax技术. (2认同)

Cha*_*lie 5

JQuery纯粹是客户端库.Asp.Net Ajax包括客户端和服务器端功能.恕我直言,比较并不公平.他们可能会根据微软的计划相互补充.

  • 我不同意Charlie,JQuery可以对服务器端函数进行回调,就像ASP.NET Ajax使用Javascript来做同样的事情一样.它们都是客户端框架,ASP.NET AJAX可以更好地封装回发代码,而JQuery可以让您更好地控制它. (2认同)