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, если модели представлений становятся чем-то большим, чем просто держатели основных данных. Подпапки будут содержать все фрагменты, необходимые для представления этого представления.

Другие вопросы по тегам