【问题标题】:ASP.NET AJAX vs jQuery in ASP.NET MVCASP.NET MVC 中的 ASP.NET AJAX 与 jQuery
【发布时间】:2010-10-21 02:56:15
【问题描述】:

ASP.NET MVC 中哪个更好用?

【问题讨论】:

    标签: asp.net jquery asp.net-mvc ajax


    【解决方案1】:

    我个人更喜欢 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)相对容易使用时,这样做并不值得。

    【讨论】:

      【解决方案2】:

      就个人而言,尽管 HtmlHelper 支持 ASP.NET Ajax,但我发现 jQuery ajax 与 JQuery forms plugin 结合是在 ASP.NET MVC 中进行 ajax 表单发布的最佳方式。

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

      $(".productListItem form").ajaxForm({ target: '#extraInfoSection' });
      

      结合控制器基类上用于检查标头的简单“IsAjaxRequest”属性:

      Request.Headers["X-Requested-With"] == "XMLHttpRequest"
      

      以及控制器中的一些逻辑以返回正确的响应类型:

      return IsAjaxRequest ? (ActionResult) View("BasketPartial", basket) : new RedirectBackToReferrerActionResult();
      

      您的表单即使在关闭 javascript 且不涉及 ASP.NET Ajax 的情况下也能正常工作。

      【讨论】:

        【解决方案3】:

        我建议您阅读 Dave Ward 的博客Encosia,而不是提出建议,该博客有一系列关于 MS Ajax/更新面板与 jQuery 发布机制的帖子。 Dave 坚持认为 jQuery 的性能非常优越,因为它减少了大约 100K from the transmission to and from the server

        【讨论】:

        • 那些帖子更关注 WebForms 而不是 MVC。该帖子中提到的 100k 节省通常是与 UpdatePanel(ViewState Delta 等)一起使用的垃圾。在 MVC 中来回传输的内容应该大致相同(只是 XmlHttpRequest 之上的抽象有所不同)。
        • 我感觉我将迁移到 MVC,因为我发现 WebForms 令人沮丧,因为实现高级 Ajax 技术似乎有很多障碍。
        • 自从最初提出这个问题以来,我想根据我所学到的知识在这次对话中添加到 cmets。尽管 MVC 不使用 WebForms,但它仍然为其 ViewEngine 构造控件层次结构,因为它仍然依赖于 ASP.NET ViewEngine。因此,我想说 Dave Ward 提到的开销仍然有些适用。当然,由于没有 ViewState 等原因,数字可能会更低。但是一些开销仍然存在,除非你用 Spark 之类的东西替换 ASP.NET ViewEngine,那么绝对没有......
        【解决方案4】:

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

        【讨论】:

        • 我不同意 Charlie,JQuery 可以对服务器端函数进行回调,就像 ASP.NET Ajax 如何使用 Javascript 来做同样的事情一样。它们都是客户端框架,ASP.NET AJAX 对回发代码有更好的封装,而 JQuery 让您可以更好地控制它。
        【解决方案5】:

        有一个用于 MVC 的 ASP.NET AJAX 变体——与 AjaxHelper 和扩展一起使用。这与 jQuery 配合得很好。我有在同一页面上同时使用两者的实例;使用 MVC AJAX 更新基于单击按钮的 DIV 并使用 jQuery 获取 JSON 数据以用于同一页面上的不同操作。标准 ASP.NET AJAX(UpdatePanels 等)应该在 WebForms 世界中使用,而不是在 MVC 中。

        【讨论】:

          【解决方案6】:

          我想提一下,Microsoft 支持 JQuery,他们将在即将发布的 Visual Studio 版本中支持它。欲了解更多信息,请访问http://live.visitmix.com/。 ASP.NET AJAX 和 jQuery 没有太多重叠,所以你想同时使用。

          【讨论】:

            【解决方案7】:

            首先,请记住 ASP.NET MVC 不支持,或者更好的是,它没有回发概念。

            1. asp.net ajax 它基于 post-back 的服务器端机制,它的使命是让 ajax 功能更容易集成到服务器端模式
            2. jQuery,因为其他框架(例如 Extjs)实现了纯客户端 ajax

            仍然可以在 asp.net mvc 中使用 asp.net 服务器控件,asp.net ajax 就是其中之一,但是 asp.net mvc 它被认为是为了分离关注点(视图)并成为 REST样式尽可能接近,因此考虑到这一点,最终的想法是:

            1. 使用 ASP.NET Web 窗体 ASP.NET AJAX 是正确的选择
            2. 使用ASP.NET MVC最好尝试去客户端,所以jQuery(或其他)更好

            对不起我的英语

            【讨论】:

              【解决方案8】:

              将 ASP.NET AJAX 与 Web 窗体结合使用,将 jQuery 与 ASP.NET MVC 结合使用

              【讨论】:

              • 这背后的动机是什么?此外,当开始一个新项目时,您会选择哪两个,ASP.NET AJAX 与 Web 窗体或 jQuery 与 MVC?为什么不使用带有 Web 表单和页面方法/Web 服务的 jQuery?我正忙于决定是否值得切换到 MVC,尽管它并不为人所知——尽管我确实来自 Java Struts / JSF 背景,所以无论如何 MVC 范式都在我的脑海中。
              【解决方案9】:

              您可能会看到的另一个替代方案是 Ajax.NET,http://www.ajaxpro.info/。我认为它比用于 WebForms 的 ASP.NET AJAX 更好。它也可以在 MVC 下运行。

              【讨论】:

                【解决方案10】:

                首先,您可以使用任何一种,只要您在谈论 Microsoft Ajax 时,您只是指客户端库。您可以使用 MS Ajax 客户端库和大多数工具包扩展程序,而无需任何服务器端控件。我使用 Web 表单和 Microsoft Ajax 构建了一个相当大的应用程序,然后将其转换为 MVC/jquery。我发现我使用的 MS Ajax 库中的功能越来越少。可用的插件太多了,以至于连 ajax 工具包都过时了。

                如果您正在谈论使用更新面板等的 MS Ajax,那么我会说不,您不能在 MVC 中使用它们。事实上,根本不要使用它们!更新面板是模拟 ajax,页面仍然经历其生命周期,几乎违背了使用 ajax 的目的。

                【讨论】:

                  猜你喜欢
                  • 2010-10-16
                  • 2010-11-18
                  • 2010-10-04
                  • 2014-01-04
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-02-24
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多