The View-Model is a composite of the abstraction of you view's state and behavior. The idea behind the
View-Model is to create an abstraction of your view which has little to no dependencies on your view.
There should be no references to UI controls or classes specific to the UI. There should be no event
handlers like what is common in a code-behind class.
For example, If a Customer object has fifty properties, but one component only shows their name, then we create a custom ViewModel type with only those two properties. Because we only have one ViewModel type per
View, we shape our ViewModel around only what is displayed (or used) in that View.
For one, just having a ViewModel points us to the right View. We need any other information other than your ViewModel type to pick the correct View. This also means we no longer need to concern ourselves with locating views by some arbitrary name, as the ViewModel is the View. Things like RenderPartial,which I have to select a name, become rather pointless at that point.