В моем приложении MVC есть много вызовов ajax (через JQuery.get()). Мне кажется, что мой контроллер усеян множеством крошечных методов, которые вызываются через ajax. Мне кажется, что это как-то вроде разбиение шаблона MVC - теперь контроллер становится скорее компонентом доступа к данным, чем маршрутизатором URI.
Я реорганизую так, что у меня есть свой "истинный" контроллер для страницы, просто выполняющей стандартные ответы маршрутизации (сохранение объектов ActionResponse). Таким образом, вызов /home/, очевидно, приведет к запуску класса HomeController, который будет реагировать каноническим способом контроллера, возвращая представление простой jane.
Затем я переместил свой материал ajax в новый класс контроллера, имя которого я предваряю "Ajax". Так, например, моя страница может иметь три разных раздела функциональности (например, корзина покупок или учетная запись пользователя). У меня есть контроллер ajax для каждого из них (AjaxCartController, AjaxAccountController). На самом деле нет ничего особенного в том, чтобы переместить материал ajax-вызова в его собственный класс контроллера - это просто сохранить вещи более чистыми. очевидно, что на стороне клиента JQuery будет использовать этот новый контроллер:
//jquery pseudocode call to specific controller that just handles ajax calls
$.get('AjaxAccount/Details'....
(1) есть лучший шаблон в MVC для ответа на вызовы ajax?
(2) Мне кажется, что модель MVC немного просачивается, когда дело доходит до ajax - это не "контролирующий" материал. Это просто лучший и наименее болезненный способ обработки аякс-вызовов (или я не знаю)?
Другими словами, абстракция "Контроллер" не кажется приятной с Ajax (по крайней мере, с точки зрения шаблонов). Что-то мне не хватает?