Часто рекомендуется использовать шаблон MVVM, что означает наличие ViewModels. По сути, для каждого View существует простой класс Model, который содержит все данные, которые попадают в View. Это сделано для того, чтобы не передавать «слишком много» (сложных бизнес-объектов) в модель и легко создавать ViewModel.
Например, если вам нужно отобразить некоторые данные из бизнес-класса под названием «Пользователь» (т.е. имя) и некоторые данные из списка заказов (например, номера заказов), вы можете создать класс Model, который содержит только строка username и IEnumerable из строки только с порядковыми номерами. Это также позволяет упростить класс, например, вместо того, чтобы писать «User.CurrentAddress.ZipCode», вы можете просто иметь строку ZipCode, которая уменьшает вложенность.
Основная причина этой модели представления заключается в том, что ее легко изменить. Скажем, вы также хотите отобразить последний элемент, который заказал пользователь - Отлично, просто добавьте новое свойство в ViewModel. Если вы передали класс User непосредственно в View, вам, возможно, придется сделать что-то вроде User.Orders.Last (). Items.Last (), что уродливо и может иметь огромные последствия для производительности - и предполагает, что класс User доступ к заказам! Если вам вдруг понадобится добавить поле из другого несвязанного класса, вам придется провести большой рефакторинг.