Meine MVC-App neigt dazu, viele Ajax-Aufrufe zu haben (via JQuery.get()). Es nervt mich, dass mein Controller mit vielen kleinen Methoden übersät ist, die über Ajax aufgerufen werden. Es scheint mir, eine Art brechen die MVC-Muster ein bisschen - der Controller ist jetzt mehr eine Datenzugriffskomponente als ein URI-Router.ASP MVC Ajax Controller Muster?
Ich refaktoriert, so dass ich meine "wahre" Controller für eine Seite nur Durchführung von Standard-Routing-Antworten (Wiedergeben ActionResponse-Objekte). Ein Aufruf von/home/wird also die HomeController-Klasse anstoßen, die in der kanonischen Controller-Art antworten wird, indem sie eine Plain-Jane-View zurückgibt.
Ich habe dann meine Ajax-Sachen in eine neue Controller-Klasse verschoben, deren Namen ich mit 'Ajax' vorstelle. So könnte meine Seite beispielsweise drei verschiedene Funktionsbereiche haben (zB Warenkorb oder Benutzerkonto). Ich habe einen Ajax-Controller für jeden von ihnen (AjaxCartController, AjaxAccountController). Es gibt wirklich nichts anderes, als die Ajax-Anruf-Sachen in eine eigene Controller-Klasse zu verschieben - es ist nur, um die Dinge sauberer zu halten. offensichtlich auf Client-Seite der JQuery würden dann diese neuen Controller thusly verwenden:
//jquery pseudocode call to specific controller that just handles ajax calls
$.get('AjaxAccount/Details'....
(1) ist es ein besseres Muster in MVC zu Ajax-Aufrufen reagiert?
(2) Es scheint mir, dass das MVC-Modell ein wenig undicht ist, wenn es um Ajax geht - es ist nicht wirklich "Controlling" Zeug. Es ist zufällig die beste und am wenigsten schmerzhafte Art, Ajax-Anrufe zu bearbeiten (oder bin ich ignorant)?
Mit anderen Worten, die 'Controller' Abstraktion scheint nicht nett zu spielen mit Ajax (zumindest aus einer Perspektive Muster). Gibt es etwas, das mir fehlt?
Stimmen Sie mit Ihnen überein - im Grunde haben wir zwei Arten von Zugriff auf "Zeug" im Internet. Das MVC-Muster behandelt einen Weg, und anders wollen wir nicht darüber reden, weil es nicht unserem Muster entspricht. Aber, zumindest für mich, da Ajax eine so zwingende Technik ist (und meine aktuelle App wird fast ausschließlich über Ajax gesteuert), wird das ausgefallene MVC-Muster wirklich größtenteils umgangen und gehackt, um auf Ajax-Aufrufe zu antworten (was es gut macht, ich könnte hinzufügen). Es scheint, als ob es noch keine sehr gute Geschichte für Ajax in der MVC-Welt gibt. –