Проще говоря, мне нравится думать о следующем:
Модель: Строго выглядит и выглядит как ваша модель данных.Для всех намерений и целей это только представление класса вашей модели данных.Он не знает о вашем Представлении или каких-либо элементах вашего Представления.Тем не менее, он не должен содержать никаких декораторов атрибутов (т. Е. Required, Length и т. Д.), Которые вы бы использовали для своего View.
View Model: Служит связующим элементом данныхваш вид и ваша модель, а во многих случаях также является оберткой для вашей модели.Он был бы бесполезным без представления, поэтому его нельзя использовать повторно в нескольких представлениях и контроллерах, как в стандартной модели.
Например, ваша Модель может иметь следующие свойства, которые являются прямыми представлениями вашего источника данных:
public string FirstName { get; set; }
public string LastName { get; set; }
Теперь, так как ваша Модель представления привязана к вашему Представлению, она можетимеют следующее свойство, которое объединяет поля FirstName и LastName модели в одну строку:
[Display(Name = "Customer Name")]
public string CustomerFullName { get { return String.Format("{0} {1}", myModel.FirstName, myModel.LastName) }}