Где в структуре папок MVC должны находиться файлы общего класса? Например, у меня есть класс, который определяет правильный DataContext для использования, поэтому я не изобретаю велосипед в каждом из своих контроллеров. Должен ли он жить в папке «Контроллеры», даже если это не контроллер? Должен ли он быть с моделями, потому что это связано с базой данных, даже если это не модель? Возможно, папка Views\Shared? Или Content является универсальной папкой для такого рода вещей? Я уверен, что мог бы поставить его где угодно, но мне было интересно, где находится «правильное» место.
Местоположение общего класса MVC
Ответы (6)
Это не контроллер, контент или представление, поэтому не используйте их. Это звучит наиболее тесно связано с вашей моделью, поэтому вы можете поместить ее в модель в подпапку под названием «Помощники» или «Утилита» или что-то в этом роде. Или вы можете добавить еще одну папку верхнего уровня под названием «Службы» и поместить ее туда. Вот куда я поместил всю логику своего приложения, посредника между контроллерами и моделью.
Если вы посмотрите на MVC Storefront Роба: отдельный проект библиотеки классов (например, Commerce.MVC.Data)
Если он может быть полезен сам по себе (подумайте о инструменте командной строки, созданном вокруг него), поместите его в папку «Модели». Если он используется только как помощник для контроллеров, поместите его в папку Controllers.
Это действительно зависит от того, что он делает, если он обращается к данным, он должен быть на уровне доступа к данным, в противном случае вы можете поместить его в папку контроллера.
Создайте отдельную сборку DataAccess, сделайте этот класс внутренним и назовите его DataContextFactory.
дмайкич,
Зачем выделять его в отдельную область? Если его код BLL, он должен быть в папке контроллера, если его элемент, связанный с DAL, он должен быть в модели. Я могу понять, если проект становится огромным, и вы хотите создать несколько подпапок, это не должно быть проблемой. Но размещение кода на другом уровне действительно противоречит цели MVC, не так ли?