Models are responsible for representing the data of the application.
Views are responsible for rendering content and handling user interaction with that content.
Controllers are the primary connection between models, view models, and views.
A view model is a view’s model. It encapsulates the data needed to populate a particular kind of view and the presentation logic needed to transform that data into properties that can be rendered.