Расположение общего класса MVC - PullRequest
7 голосов
/ 03 февраля 2009

Где должны находиться файлы общих классов в структуре папок MVC? Например, у меня есть класс, который определяет правильный DataContext для использования, поэтому я не изобретаю колесо заново в каждом из моих контроллеров. Должен ли он жить в папке «Контроллеры», даже если это не контроллер? Должно ли это быть с Моделями, потому что это связано с базой данных, даже если это не модель? Возможно, папка Views \ Shared? Или Content - универсальная папка для такого рода вещей? Я уверен, что могу поставить его где угодно, но мне было интересно, где «правильное» место.

Ответы [ 6 ]

9 голосов
/ 03 февраля 2009

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

3 голосов
/ 03 февраля 2009

Если вы посмотрите на витрину Роба MVC: отдельный проект библиотеки классов (например, Commerce.MVC.Data)

0 голосов
/ 04 февраля 2009

Создайте отдельную сборку DataAccess, сделайте этот класс внутренним и назовите его DataContextFactory.

0 голосов
/ 03 февраля 2009

dmajkic,

Зачем выделять его на свою территорию? Если это BLL-код, он должен находиться в папке контроллера, если его элемент, связанный с DAL, он должен находиться в модели. Я могу понять, если проект становится огромным, и вы хотите создать несколько подпапок, это не должно быть проблемой. Но как вы думаете, размещение кода на другом уровне действительно противоречит цели MVC?

0 голосов
/ 03 февраля 2009

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

0 голосов
/ 03 февраля 2009

Если это может быть полезно само по себе (подумайте об инструменте командной строки, построенном вокруг него), поместите его в папку Models. Если он используется только в качестве помощника для контроллеров, поместите его в папку «Контроллеры».

...