ASP.NET MVC - строго типизированная модель представления, где она находится? - PullRequest
3 голосов
/ 25 февраля 2010

Я пытаюсь создать строго типизированную модель представления, как Джон Шихан предлагает здесь . Куда это должно идти? Я могу аргументировать себя для Модели, Представления и Контроллера.

Ответы [ 4 ]

4 голосов
/ 25 февраля 2010

Он должен находиться в каталоге «Модели» веб-приложения.ViewModels по определению относятся к одному или нескольким представлениям и поэтому принадлежат веб-приложению, а не ядру.

Вы могли бы определить их в контроллере, который их использует, но это не масштабируется.То же самое с определением класса в коде представления.Даже если один класс на файл означает больше файлов, его легче найти и легче поддерживать.

Я буду часто создавать подпапки для каждого контроллера, поэтому я получаю такие вещи, как Web.Models.Foo.BarViewModel .

3 голосов
/ 25 февраля 2010

Если они есть в моем доменном проекте в каталоге PresentationModel и, например, @Seth Pretry-Johnson, они есть в отдельных каталогах контроллеров.

Это моя общая структура проекта:

  • Сайт проекта
    • Контроллеры
    • 1010 * Просмотры *
    • и т. Д.
  • Домен Project
    • Модель
    • Хранилище
      • Аннотация
    • Услуги
      • Аннотация
    • PresentationModels
      • Главная
      • Пользователь
      • Etc
  • Проект DataAccess
    • Хранилища

HTH (и больше вопросов не вызывает ..; -),
Charles

0 голосов
/ 26 февраля 2010

Он может идти туда, куда вы хотите, зачем вам нужен кто-то, кто скажет вам, где поставить класс?

Многие люди ошибочно полагают, что, если вы не поместите ваши классы в какой-то определенный каталог, сгруппированный по функциональности, все не будет работать.Это может быть верно для других платформ, но с ASP.NET MVC это не так.Код компилируется в сборки.

0 голосов
/ 25 февраля 2010

Я поместил реальный класс модели в папку Models.

/Controllers
/Models
    /Entities
    /Mappings
    /ValueTypes
    /ViewModels

Нечто подобное. Я большой поклонник Fluent NHibernate.

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