Группировка видов, контроллеров, моделей в MVC - PullRequest
3 голосов
/ 11 мая 2009

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

так что есть способ сгруппировать связанные контроллеры, представления, модели вместе, например, если у меня есть модуль галереи, я хочу, чтобы все его контроллеры, представления, модели были сгруппированы в папке галереи.

Ответы [ 4 ]

3 голосов
/ 11 мая 2009

Области звучат как то, что вы ищете. Это позволит вам группировать контроллеры / представления / и т. Д. Разве я не понял вопрос?

2 голосов
/ 11 мая 2009

Фил Хаак обсуждал это здесь , это та же проблема, с которой я столкнулся и которую еще предстоит правильно преодолеть.

1 голос
/ 11 мая 2009

Я нашел относительно простое решение, которое использует конфигурацию IIS для моделирования областей. Никаких расширений для существующей инфраструктуры MVC не требуется.

Создайте новый проект MVC под свое решение для каждой области, которую вы хотите на своем сайте (например, Root, Блог, Форум, App1, App2). Если вам нужен какой-либо общий вспомогательный код или общая модель, поместите его в отдельный проект dll, от которого зависят проекты MVC.

В IIS настройте корневой каталог сайта так, чтобы он указывал на корневой каталог проекта. Создайте веб-приложения в корневом каталоге сайта, указывающие на каждый из каталогов проекта подобласти.

При настройке карт маршрутов для каждой подобласти не включайте название приложения в маршрут. IIS, кажется, позаботится об этом для вас. (например, "ShowPost / {postname}", а не "/ Blog / ShowPost / {postname}")

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

1 голос
/ 11 мая 2009

Судя по всему, вы идете вразрез с основными принципами MVC, которые заключаются в разделении модели, вида и контроллера, а не в том, чтобы разделить их на 90 градусов с помощью модулей.

Я не совсем уверен, какую выгоду вы получите от разбиения его на модули, так как я ожидаю, что у вас будет один GalleryController. Скорее всего, вам понадобится группировка для большинства «сущностей» с представлениями, возможно, по одному или нескольким для каждого действия GalleryController, но они находятся в своей собственной папке, которая обеспечивает необходимую вам функциональность.

Наконец-то есть модели. Очевидно, я не знаю ваш проект, поэтому я не знаю, как он спланирован, но моделей обычно не существует для использования одного контроллера (или модуля в вашем случае). Например - у меня есть модели для пользователей, компаний, транспортных средств и т. Д. И т. Д. Эти модели являются общим представлением моей структуры данных и не имеют ничего общего с модулями, поскольку пользователь может видеть их, просматривая веб-страницу. Я не могу разделить их на модули, потому что суть в том, что они являются общими для всего приложения.

Итак ... на самом деле это виды, которые могут немного запутаться, но они уже разбиты на папки на основе своего контроллера. Сказав, что вы можете переместить их немного, если это лучше соответствует вашим потребностям. В остальном это не нужно, потому что вам это не нужно, если вы хотите использовать «надлежащий» MVC (то есть модульные модели), или в этом нет необходимости (то есть только один контроллер). И если ваш контроллер становится слишком большим, просто создайте отдельный модуль для любой функциональности, которую вы хотите выделить. Я считаю, что это настолько модульно, насколько вам когда-либо понадобится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...