2009-04-22 16 views

Antwort

32

Persönlich bevorzuge ich jQuery aus den folgenden Gründen: -

  1. Die Plug-in-Gemeinschaft ist weit vielfältiger und zieht Entwickler aus einer breiten Palette von Hintergründen (nicht nur der MS-Stack). Für MS-AJAX sind Sie im Moment ziemlich stark an das clientseitige AJAX Control Toolkit für Ihre UI-Widgets gebunden.
  2. Ich finde die jQuery API weit häufiger gemeinsame clientseitige Aufgaben als die von MS AJAX
  3. Angesichts der Mangel an WebForms Rauch und Spiegeln in MVC Sie manchmal eine feste Kontrolle über das DOM, bestimmte Dinge zu tun, die Die von jQuery angebotene CSS Selector Engine hilft Ihnen dabei.

Im Hinblick darauf, was MS AJAX bietet Ihnen in MVC, kann es eine Menge für Sie in Bezug auf die Ihnen einen schnellen Weg zu „AJAXify“ Formulare und Links zu tun, aber so weit es mich betrifft das Hinzufügen 90kb Wert von Javascript zu tun, ist es nicht wirklich wert, wenn die entsprechenden Aufrufe in jQuery (zB $ .get, $ .post, $ (Element) .load) relativ einfach zu bedienen sind.

1

Ich möchte erwähnen, dass Microsoft JQuery unterstützt und sie in zukünftigen Versionen von Visual Studio unterstützen werden. Für weitere Informationen besuchen Sie bitte http://live.visitmix.com/. ASP.NET AJAX und jQuery überlappen sich nicht sehr, daher möchten Sie beide verwenden.

4

JQuery ist eine rein clientseitige Bibliothek. Asp.Net Ajax beinhaltet sowohl clientseitige als auch serverseitige Funktionalitäten. IMHO, Vergleich ist nicht wirklich fair. Sie könnten sich nach den Plänen von Microsoft ergänzen.

+2

Ich stimme nicht zu Charlie, JQuery kann Callbacks zu serverseitigen Funktionen machen, ähnlich wie ASP.NET Ajax Javascript verwendet, um das Gleiche zu tun. Sie sind beide Client-seitige Frameworks, ASP.NET AJAX hat eine bessere Kapselung des Postback-Codes, während JQuery Ihnen viel mehr Kontrolle darüber gibt. – emalamisura

2

Es gibt eine Variante von ASP.NET AJAX für MVC - verwendet mit dem AjaxHelper und den Erweiterungen. Dies funktioniert gut im Zusammenspiel mit jQuery. Ich habe Fälle, wo ich beide auf der gleichen Seite verwende; Verwenden von MVC AJAX zum Aktualisieren eines DIV-basierten Klickvorgangs und Verwenden von jQuery zum Abrufen von JSON-Daten für eine andere Operation auf derselben Seite. Standard ASP.NET AJAX (UpdatePanels usw.) sollte in der WebForms-Welt verwendet werden, nicht in MVC.

18

Persönlich, trotz der HtmlHelper Unterstützung für ASP.NET Ajax, finde ich jQuery Ajax in Verbindung mit der JQuery forms plugin, um die beste Möglichkeit zu sein, Ajax Form Beiträge in ASP.NET MVC zu tun.

z.B. mit einem Jquery Anruf auf einer HTML-Produktliste Seite mit einem Formular für jedes Produkt das Element ermöglicht einen Korb hinzugefügt werden, kann eine einzige Zeile jquery Code ‚ajaxify‘ alle Formen auf der Seite

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

kombiniert mit einem einfachen ‚IsAjaxRequest‘ Eigenschaft auf einem Controller Basisklasse, die die Header überprüft:

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

und eine gewisse Logik im Controller die richtige Antwort Typ zurück:

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

Sie haben ein Formular, das auch mit deaktiviertem JavaScript funktioniert und kein ASP.NET Ajax beteiligt.

+3

Funktioniert dies mit serverseitiger Validierung? –

1

Zunächst einmal könnte es nützlich sein, im Auge zu nehmen, dass ASP.NET MVC nicht unterstützt, oder besser, nicht hat nicht das Postback-Konzept ..

  1. asp.net Ajax es basiert auf der Post-back, serverseitigen Mechanismus, es ist es die Mission zu machen leichter zu ajax-Funktionen in einem Server-Side-Modus
  2. jQuery, als anderer Frameworks (zB ExtJS) realisiert ein reines Client-seitige ajax
zu integrieren

Es ist immer noch möglich, asp.net Serversteuerelemente in asp.net mvc, asp.net ajax es ist zu verwenden einer von ihnen, aber asp.net Mvc es gemacht, so dachte man, Bedenken (Ansichten) zu trennen und REST-Stil so nah wie möglich zu sein, so dass dies in Anbetracht der letzten Gedanken nehmen wäre: Mit

  1. ASP.NET Web Forms ASP.NET AJAX es ist die richtige choiche
  2. Mit ASP.NET MVC ist es besser, zu versuchen, Kunden zu gehen, so jQuery (oder andere) ist die bessere

Sorry für mein Englisch

1

Verwenden Sie ASP.NET AJAX mit Web Forms und jQuery mit ASP.NET MVC

+0

Was ist die Motivation dahinter? Auch, wenn Sie ein neues Projekt starten, welche der beiden würden Sie wählen, ASP.NET AJAX mit Web Forms oder jQuery mit MVC? Und warum nicht jQuery mit Web Forms und Page Methoden/Web Services? Ich bin beschäftigt zu entscheiden, ob es sich lohnt, zu MVC zu wechseln, obwohl es nicht so bekannt ist - obwohl ich von einem Java Struts/JSF-Hintergrund komme, so dass das MVC-Paradigma sowieso in meinem Kopf ist. – jamiebarrow

9

Anstatt eine Empfehlung zu machen, schlage ich vor, lesen Sie Dave Ward Blog Encosia, die eine Reihe von Beiträgen auf MS Ajax/Update Panel vs jQuery Beitrag Mechanismus hat. Dave behauptet, dass die Leistung von jQuery weit überlegen ist, da es ungefähr 100K from the transmission to and from the server ausschließt.

+6

Diese Posts befassen sich mehr mit WebForms als mit MVC. Die 100k Speicherung, die in diesem Beitrag erwähnt wird, ist normalerweise der Müll, der mit einem UpdatePanel (ViewState das Delta usw.) einhergeht. In MVC sollte das, was entlang der Leitung hin und her läuft, ungefähr äquivalent sein (es ist nur die Abstraktion über der XmlHttpRequest, die sich unterscheidet). –

+2

Ich habe das Gefühl, dass ich auf die MVC migrieren werde, da ich die WebForms als frustrierend empfinde, weil es so viele Möglichkeiten zu springen scheint, um fortgeschrittene Ajax-Techniken zu implementieren. –

+4

Seit ich diese Frage gestellt habe, möchte ich die Kommentare zu diesem Gespräch hinzufügen, basierend auf dem, was ich gelernt habe. Obwohl MVC WebForms nicht verwendet, erstellt es immer noch die Steuerungshierarchie für seine ViewEngine, da es immer noch auf der ASP.NET ViewEngine basiert. Daher würde ich sagen, dass der von Dave Ward erwähnte Overhead immer noch etwas anwendbar ist. Zugegeben, die Zahlen könnten aufgrund von ViewState usw. niedriger sein. Aber ein Teil des Overheads existiert immer noch, außer natürlich, wenn Sie die ASP.NET ViewEngine durch etwas wie Spark ersetzen, dann gibt es absolut keine ... – emalamisura

1

Eine andere Alternative, die Sie wahrscheinlich betrachten könnten, ist Ajax.NET, http://www.ajaxpro.info/. Ich denke, es ist besser als ASP.NET AJAX für WebForms. Es ist auch unter MVC lauffähig.

1

Zunächst könnten Sie beide verwenden, solange Sie über Microsoft Ajax sprechen, beziehen Sie sich nur auf die Client-Bibliothek. Sie können die MS Ajax-Clientbibliothek und die meisten Toolkit-Extender ohne serverseitige Steuerelemente verwenden. Ich habe eine ziemlich große Anwendung mit Webformularen erstellt und Microsoft Ajax dann in MVC/jquery konvertiert. Ich stellte fest, dass ich immer weniger Funktionen in der MS Ajax-Bibliothek verwendete. Es gibt so viele Plugins, dass sogar das Ajax-Toolkit veraltet ist.

Wenn Sie über MS Ajax mit Update-Panels usw. sprechen, dann würde ich Nein sagen, Sie können sie nicht in MVC verwenden. In der Tat, benutze sie überhaupt nicht! Update-Panels sind simulierte Ajax, die Seite geht immer noch durch ihre Lebenszyklen, fast den Zweck der Verwendung von Ajax zu besiegen.