По сути, модель и модель представления - это простые классы с атрибутами.
Основная цель этих классов - описать («Модель») объект для соответствующих аудиторий, которые являются соответственно контроллером и представлением.
Итак, вы совершенно правы, когда говорите
Насколько я понимаю, это своего рода модель, которая имеет конкретную цель взаимодействия с представлением
Таким образом, в то время как классы модели фактически являются объектами домена, с которыми взаимодействует ваше приложение, модели представлений - это простые классы, с которыми взаимодействуют ваши представления.
Надеюсь, это поможет :)
Обновление :
Microsoft разработала специализированную версию шаблона презентации Мартином Фаулером, в значительной степени основанную на Model-View-Controller, и назвала ее Model-View-ViewModel (MVVM) для приложения PF. Этот шаблон нацелен на современные платформы разработки пользовательского интерфейса, где у разработчиков пользовательского интерфейса разные требования, основанные больше на бизнес-логике, чем у традиционных разработчиков. Посмотрите здесь немного теории
Проще говоря, мне нравится думать о следующем:
Модель: строго похоже на вашу модель данных. Для всех намерений и целей это всего лишь классовое представление вашей модели данных. Ему ничего не известно о вашем представлении или каких-либо элементах в вашем представлении. Тем не менее, он не должен содержать никаких декораторов атрибутов (например, Required, Length и т. Д.), Которые вы бы использовали для своего представления.
Просмотреть модель: служит связующим звеном между вашим представлением и вашей моделью, а во многих случаях также является оболочкой для вашей модели. Он был бы бесполезен без представления, поэтому он обычно не может повторно использоваться в нескольких представлениях и контроллерах, как стандартная модель.
Например, ваша Модель может иметь следующие свойства, которые являются прямым представлением вашего источника данных:
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) }}
источник
Я нашел эту статью очень полезным ресурсом для понимания того, как «Модель предметной области» и «Модель представления» взаимодействуют в приложении MVC, особенно в отношении привязки. Лучше всего включать примеры вместо абстрактных описаний.
«С тех пор, как был выпущен MVC, я заметил большую путаницу в том, как лучше всего создавать модели представления. Иногда эта путаница не без уважительной причины, поскольку, похоже, нет тонны информации о лучших практических рекомендациях. Кроме того, нет универсальное решение, которое действует как серебряная пуля. В этом посте я опишу несколько основных появившихся шаблонов и их плюсы / минусы. Важно отметить, что многие из этих шаблонов возникли из людей, решающих реальные проблемы ".
http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx
источник
В WikiPedia есть более полное описание Model vs. ModelView, чем вы получите в ответе SO: http://en.wikipedia.org/wiki/Model_View_ViewModel
Я цитирую:
Модель : как и в классическом шаблоне MVC, модель относится либо к (а) объектной модели, которая представляет реальное содержимое состояния (объектно-ориентированный подход), либо (б) к уровню доступа к данным, который представляет это содержимое (данные - центрический подход).
Представление : как и в классическом шаблоне MVC, представление относится ко всем элементам, отображаемым графическим интерфейсом пользователя, таким как кнопки, окна, графика и другие элементы управления.
ViewModel : ViewModel является «моделью представления», что означает, что это абстракция представления, которая также служит для привязки данных между представлением и моделью. Это можно рассматривать как специализированный аспект того, что могло бы быть Контроллером (в шаблоне MVC), который действует как связыватель / преобразователь данных, который изменяет информацию о модели в информацию о представлении и передает команды из представления в модель. ViewModel предоставляет общедоступные свойства, команды и абстракции. ViewModel можно сравнить с концептуальным состоянием данных, а не с реальным состоянием данных в модели.
источник
Существует понятие ViewModel, но оно обычно не связано с Asp.net MVC. MVC использует шаблон контроллера представления модели, в котором контроллер обрабатывает взаимодействия, создает данные из модели, а затем передает эти данные в представление для отображения.
ViewModels (и шаблон ViewModel представления модели) в большей степени ассоциируется с Silverlight и WPF. Xaml немного отличается тем, что представления могут выполнять двустороннюю привязку к ViewModels, поэтому технология немного отличается. Например, если вы привязываете текстовое поле к полю, при вводе в это текстовое поле значение поля обновляется динамически. Такое взаимодействие невозможно на веб-страницах, поскольку веб-страницы не имеют состояния.
Сходство этих двух шаблонов состоит в том, что они оба пытаются отделить логику от отображения. Наиболее частым использованием / причиной этого является тестирование: вы хотите иметь возможность выполнять из кода (через среду тестирования) все взаимодействия, которые пользователь будет вызывать через пользовательский интерфейс.
источник