ASP.NET MVC 3 нескольких модуля - PullRequest
0 голосов
/ 17 марта 2011

В настоящее время я изучаю возможность включения MVC в нашу существующую платформу WebForms. В настоящее время у нас есть понятие «модули», такие как ThreadsModules и CreateMessageModule. Модули - это просто UserControls, которые загружаются на страницу фреймворком. При обратной передаче веб-формы ASP.NET анализируют поля _EVENTTARGET и _EVENTARGUMENT и вызывают соответствующие обработчики событий (как и любая другая страница веб-форм).

В MVC, однако, нет элементов управления и нет обратной передачи. Итак, вопрос в том, что там? Везде понятие Model-View-Controller говорит о конкретной странице, но мне нужны модули. Поэтому я думал о том, чтобы сделать модули состоящими из частичного контроллера модели и создать MasterController, который будет анализировать запрос и вызывать контроллер соответствующего модуля.

Однако при таком подходе все еще остается проблема интеграции разных контроллеров в одну страницу. Например, на странице у меня есть ThreadsModule, который содержит сетку. Сетка должна сортироваться и разбиваться на страницы, поэтому ей нужен собственный контроллер. Так что тут у меня будет 2 вложенных формы, которые будут отправляться каждый раз, когда я нажимаю кнопку «Сортировка» в сетке. Очевидно, я мог бы заставить контроллер ThreadsModule иметь дело с сортировкой сетки. Но это означает, что мне придется создавать каждый другой модуль, который имеет сетки, чтобы знать, как сортировать. Много избыточности и неэффективности.

По сути, основной вопрос заключается в том, как инкапсулировать сложную логику, которую можно повторно использовать в контроллерах?

UPD : Позвольте мне привести другой сценарий. У вас есть страница с несколькими формами. Формы публикуются для разных целей, возможно, на разных контроллерах. Каким образом пользователь может оставаться на той же странице после того, как какая-либо конкретная форма отправит свой запрос? Опять же, это полезно для инкапсуляции и повторного использования логики.

1 Ответ

3 голосов
/ 17 марта 2011

Мне кажется, что вы пытаетесь включить в MVC концепции, созданные для удовлетворения специфических требований веб-форм.

Я бы посоветовал вам НЕ пытаться применять архитектуру веб-форм к MVC.Это действительно своя философия и способ делать вещи.Тот факт, что что-то работает хорошо в WebForms, не означает, что в MVC он должен работать так же.

Ваша архитектура звучит так, как будто она плохо спроектирована и содержит много бизнес-логики в пользовательских элементах управления.Это не способ делать вещи в MVC.Вместо этого вам следует преобразовать эти элементы управления в «службы», которые могут вызывать ваши контроллеры.

РЕДАКТИРОВАТЬ:

Важно помнить, что MVC - это архитектура представления , а не общая архитектура приложения.MVC заботится только о том, как представить информацию пользователю и как зафиксировать его ввод.Все бизнес-правила, вычисления, логика должны происходить в бизнес-объектах, которые не имеют ничего общего с контроллерами или представлениями ... и только смутно связаны с моделями.

Вы полностью контролируете визуализированный вывод.Если вы хотите использовать несколько форм с разными целями, вы можете сделать это.Просто установите ваши действия на то, что вы хотите.

...