ASP.NET MVC: соглашение об организации ViewModels
Как обсуждалось в различных вопросах и блогах MVC, мы знаем, что компоновка проекта ASP.NET MVC очень сложна.
Я слепо сделал подкаталог в Controllers
папка.
Это не правильно.
http://www.imagechicken.com/uploads/1252003002097179400.png
Вопрос: Каково общепринятое соглашение о том, в каком каталоге хранить ваши ViewModels? Каковы ваши предложения или какова установленная конвенция?
3 ответа
Я думаю, что идея заключается в том, что (View)Models должен идти в каталог Models (который пуст при создании нового проекта ASP.NET MVC).
Лично для меня более логично размещать пространства имен вокруг функций, а не механики, но, хотя это не имеет никакого отношения к моделям, это будет иметь некоторые последствия, когда речь заходит о контроллерах и представлениях.
Я использую папку "Модели" рядом с контроллерами и представлениями. Тот же, который пуст в вашем проекте (я не использую Области).
"М" в модели "MVC" идет в отдельной сборке. Единственными моделями в веб-сборке являются модели представления / редактирования.
Внутри папки Models, как обычно, есть подпапки по пространству имен. Так что я:
Vertex.Data (сборка с репозиториями и т. Д.)
Vertex.Web
Контроллеры BarController FooController модели Бар BarListItem Foo FooDetail FooListItem Просмотры Бар Foo Общий
...так далее.
Я обычно создаю модель для каждого вида. Даже если это просто точная карта какого-то другого объекта в моем проекте, который я мог бы использовать. Таким образом, мой взгляд и требуемая модель отделены от остальной части приложения. Это также упрощает добавление данных в представление в будущем, просто расширяя модель представления.
Требуется немного больше времени для начала и иногда кажется, что вы дублируете объекты, но я просто предпочитаю разделение.
Я храню все мои модели представлений в каталоге моделей, созданном в проекте MVC. Эти "модели" отображают один на один с моими взглядами. Я использую подпапки в папке Models, если модели представлений становятся чем-то большим, чем просто держатели основных данных. Подпапки будут содержать все фрагменты, необходимые для представления этого представления.