Mi aplicación MVC tiende a tener muchas llamadas ajax (a través de JQuery.get()). Me fastidia que mi controlador esté lleno de muchos métodos pequeños que se llaman a través de ajax. Me parece que es algo así como rompiendo un poco el patrón MVC - el controlador ahora es más un componente de acceso a datos que un enrutador URI.Patrón de controlador ASP MVC Ajax?
Refactoré para que tenga mi controlador "verdadero" para una página que solo realiza respuestas de enrutamiento estándar (objetos de ActionResponse de ajuste). Por lo tanto, una llamada a/home/obviamente activará la clase HomeController que responderá en la forma de controlador canónico devolviendo una vista normal de jane.
Luego moví mis cosas de Ajax a una nueva clase de controlador cuyo nombre me estoy imprimiendo con 'Ajax'. Entonces, por ejemplo, mi página puede tener tres secciones diferentes de funcionalidad (por ejemplo, carrito de compras o cuenta de usuario). Tengo un controlador ajax para cada uno de estos (AjaxCartController, AjaxAccountController). No hay nada realmente diferente al mover el material de llamada ajax a su propia clase de controlador; es solo para mantener las cosas más limpias. en el lado del cliente, obviamente, el jQuery entonces utilizar este nuevo controlador de esta manera:
//jquery pseudocode call to specific controller that just handles ajax calls
$.get('AjaxAccount/Details'....
(1) hay una mejor patrón en MVC para responder a las llamadas ajax?
(2) Me parece que el modelo MVC tiene un poco de fugas cuando se trata de ajax - en realidad no se trata de cosas "de control". Simplemente resulta ser la mejor y la menos dolorosa forma de manejar las llamadas ajax (¿o soy un ignorante)?
En otras palabras, la abstracción 'Controlador' no parece jugar bien con Ajax (al menos desde una perspectiva de patrones). ¿Se me escapa algo?
De acuerdo con usted, básicamente tenemos dos tipos de acceso a 'cosas' en la web. El patrón MVC se maneja de una manera, y de otra manera no queremos hablar porque no coincide con nuestro patrón. Pero, al menos para mí, dado que ajax es una técnica tan convincente (y mi aplicación actual se maneja casi por completo a través de ajax), el patrón de MVC de lujo en realidad se está eludiendo y pirateando para responder a las llamadas ajax (lo cual funciona bien, yo podría agregar). Parece que todavía no hay una buena historia para ajax en el mundo de MVC. –