Что не так с размещением моделей в папке, отличной от Models?

Я новый ученик ASP.NET MVC. Я просмотрел несколько книг и примеров кода. Пока я учусь, я задал вопрос ниже и не могу четко понять пункт ниже.

Большинство книг объясняют, что размещение моделей в Models папка является соглашением о конфигурации. Они также утверждают, что ASP.NET MVC Framework предполагает, что разработчики помещают модели в эту папку. Тем не менее, большинство примеров кода и многие другие разработчики помещают модели в папку, отличную от Models, такие как ViewModels в отдельном проекте библиотеки классов (т.е. Services Проект).

Есть ли разница между этими двумя способами? Что-нибудь делает ASP.NET MVC с моделями, если мы помещаем их в Models папка? Что хорошего и плохого в них? Как вы делаете для своих проектов?

3 ответа

Решение

В большинстве книг объясняется, что размещение моделей в папке "Модели" является соглашением о конфигурации. Они также утверждают, что ASP.NET MVC Framework предполагает, что разработчики помещают модели в эту папку.

Это не верно. Единственный раз, когда asp.net-mvc использует структуру папок и нуждается в ее настройке (явно или по соглашению), это при поиске Views. Контроллеры имеют соглашение, заканчивающееся суффиксом "Контроллер", а Модели не имеют его. Вы можете свободно размещать модели там, где вам нравится.

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

Однако, поскольку вы только изучаете MVC, возможно, стоит потратить время на то, как создавать небольшие приложения MVC, а не на их разработку, а затем сосредоточиться на этом аспекте.

Взгляните и на эту ссылку, она может пригодиться позже в ASP.NET MVC - отдельное большое приложение

Смотрите эту ссылку для получения дополнительной информации.

Модель - это своего рода представление базы данных объекта домена, это представление модели приложения, например, мотоцикла... но представление, которое отображает, что мотоцикл может захотеть отобразить больше информации о мотоцикле, чем то, которое представлено объект предметной области... и так далее появляется "модель" модели представления (которой их несколько), которая в основном "содержит" модель предметной области...

Шаблоны View Model обычно предлагают гибкость, предлагая своего рода наследование / запутывание зависимости, если хотите.

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

например, модель домена

 public class Motorcycle
 {
     public string Make { get; set; }
     public string Model { get; set; }
     public int Year { get; set; }
     public string VIN { get; set; }
 }

Посмотреть модель

 public class MotorcycleViewModel
 {
     public Motorcycle Motorcycle { get; set; }
     public SelectList MakeList { get; set; }
     public SelectList ModelList { get; set; }
 }
Другие вопросы по тегам