Что не так с размещением моделей в папке, отличной от 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; }
}