Модель ASP.NET в MVC модель представления против


хорошо, я слышал дискуссию о "ViewModels" в отношении MS ASP.NET MVC.

теперь, это должно быть определенный вид модели, правильно? Не конкретный вид зрения.

насколько я понимаю, это своего рода модель, которая имеет конкретную цель взаимодействия с видом? Или что-то в этом роде?

некоторые разъяснения.

5 78

5 ответов:

по существу модель и модель представления являются простыми классами с атрибутами.

основная цель этих классов-описать ("смоделировать") объект для их соответствующих аудиторий, которые являются соответственно контроллером и представлением.

Так что вы совершенно правы, когда говорите

насколько я понимаю, это своего рода Модель, которая имеет конкретную цель взаимодействие с видом

Так, в то время как модель классов фактически это доменные сущности, с которыми взаимодействует ваше приложение, модели представлений-это простые классы, с которыми взаимодействуют ваши представления.

надеюсь, что это помогает :)

обновление:

Microsoft разработала специализированную версию шаблона представления Мартином Фаулером в основном на основе модели-Вид-Контроллер и назвал его Model-View-ViewModel (MVVM) для приложения PF. Этот шаблон предназначен для современных платформ разработки пользовательского интерфейса, где пользовательский интерфейс разработчики имеют различные требования, основанные больше на бизнес-логике, чем традиционные разработчики. Посмотри здесь немного теории

проще говоря, мне нравится думать о следующем:

модель: строго выглядит и чувствует себя как модель данных. Для всех намерений и целей это только представление вашей модели данных. Он не имеет никакого представления о вашем представлении или каких-либо элементов в вашем представлении. Тем не менее, он не должен содержать никаких атрибутов декораторов (т. е. требуется, длина и т. д.), что вы будете использовать для вашего зрения.

Модель Вид: служит Data-binder между вашим представлением и вашей моделью и во многих случаях также является оболочкой для вашей модели. Он будет бесполезен без представления, поэтому он обычно не используется повторно в нескольких представлениях и контроллерах, как стандартная модель.

в качестве примера, ваша модель может иметь следующие свойства, которые являются прямыми представлениями вашего источника данных:

    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 я наблюдал много путаницы о том, как лучше всего строить модели представления. Иногда эта путаница не без оснований, так как там не кажется, что тонна информации там на best практические рекомендации. Кроме того, нет решения" один размер подходит всем", которое действует как серебряная пуля. В этом посте, я опишу несколько основных моделей, которые появились и плюсы/минусы каждого из них. Важно отметить, что многие из этих моделей возникли у людей, решающих реальные проблемы."

http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx

в Википедии есть более полное описание модели и вида модели, чем вы получите в ответ так: http://en.wikipedia.org/wiki/Model_View_ViewModel

цитирую:

модель: как и в классическом шаблоне MVC, модель относится либо (а) к объектной модели, представляющей содержимое реального состояния (объектно-ориентированный подход), либо (б) к уровню доступа к данным, представляющему это содержимое (ориентированный на данные подход.)

View: как и в классическом шаблоне MVC, представление относится ко всем элементам, отображаемым графическим интерфейсом, таким как кнопки, окна, графика и другие элементы управления.

ViewModel: ViewModel-это "модель представления", то есть это абстракция представления, которая также служит для привязки данных между представлением и моделью. Это можно рассматривать как специализированный аспект того, что будет контроллером (в шаблоне MVC), который действует как данные связыватель / преобразователь, который изменяет информацию о модели в информацию о представлении и передает команды из представления в модель. ViewModel предоставляет общедоступные свойства, команды и абстракции. Модель представления была уподоблена концептуальному состоянию данных в отличие от реального состояния данных в модели.

есть такое понятие, как модель представления, но это в основном не связано с Asp.net в MVC. MVC использует шаблон контроллера вида модели, где контроллер обрабатывает взаимодействия, создает данные из модели, а затем передает эти данные в представление для отображения.

ViewModels (и модель ViewModel pattern) более обычно ассоциируется с Silverlight и WPF. Xaml немного отличается тем, что представления могут выполнять двустороннюю привязку к ViewModels, поэтому технология является немного по-другому. Например, если вы привязываете текстовое поле к полю при вводе в это текстовое поле, значение поля обновляется динамически. Такое взаимодействие на самом деле невозможно на веб-страницах, поскольку веб-страницы не имеют состояния.

сходство двух моделей является то, что они оба пытаются отделить логику от отображения. Наиболее распространенным использованием / причиной этого является тестирование: вы хотите иметь возможность выполнять из кода (через платформу тестирования) все взаимодействия, которые a пользователь будет вызывать через пользовательский интерфейс.