В настоящее время я изучаю возможность включения MVC в нашу существующую платформу WebForms. В настоящее время у нас есть понятие «модули», такие как ThreadsModules и CreateMessageModule. Модули - это просто UserControls, которые загружаются на страницу фреймворком. При обратной передаче веб-формы ASP.NET анализируют поля _EVENTTARGET и _EVENTARGUMENT и вызывают соответствующие обработчики событий (как и любая другая страница веб-форм).
В MVC, однако, нет элементов управления и нет обратной передачи. Итак, вопрос в том, что там? Везде понятие Model-View-Controller говорит о конкретной странице, но мне нужны модули. Поэтому я думал о том, чтобы сделать модули состоящими из частичного контроллера модели и создать MasterController, который будет анализировать запрос и вызывать контроллер соответствующего модуля.
Однако при таком подходе все еще остается проблема интеграции разных контроллеров в одну страницу. Например, на странице у меня есть ThreadsModule, который содержит сетку. Сетка должна сортироваться и разбиваться на страницы, поэтому ей нужен собственный контроллер. Так что тут у меня будет 2 вложенных формы, которые будут отправляться каждый раз, когда я нажимаю кнопку «Сортировка» в сетке. Очевидно, я мог бы заставить контроллер ThreadsModule иметь дело с сортировкой сетки. Но это означает, что мне придется создавать каждый другой модуль, который имеет сетки, чтобы знать, как сортировать. Много избыточности и неэффективности.
По сути, основной вопрос заключается в том, как инкапсулировать сложную логику, которую можно повторно использовать в контроллерах?
UPD : Позвольте мне привести другой сценарий. У вас есть страница с несколькими формами. Формы публикуются для разных целей, возможно, на разных контроллерах. Каким образом пользователь может оставаться на той же странице после того, как какая-либо конкретная форма отправит свой запрос? Опять же, это полезно для инкапсуляции и повторного использования логики.