MVVM is possible in. NET 4.5 with model binding and the use of templated bound controls like FormView.
Here is the technique iI use:
I design ViewModels for each UserControl and nested UserControl and then use a FormView that is always in EditMode, where iI include the controls that bind to model properties using Binding expressions.
I set the SelectMethod and UpdateMethod of the FormView. The first returns the ViewModel and the 2nd calls TryUpdate() on it. On postbacks iI always call the FormView's Update method in Preload or Load. In that way the ViewModel is always up-to-date from the view.
I run the logic inside the ViewModel and on PreRender iI rebind the view to apply any changes. The key in this method is to inject the ViewModel into the view (UserControl) outside the view (ex. in Page level) and ofcourseof course ensure that is serializable and cached in ViewState or any other place iI choose.
Finally iI disable the ViewState in all controls since they are ultimetaly "driven" by the cached stateful ViewModel and don't need their own state.
This technique never failed me so far and iI only wish iI could find a solution for command/button binding too, like WPF.
P.S. I also observed that caching a viewmodel in ViewState gives smaller footprint on the page than having it active on individual controls. The reason is that you can not control which properties and nested elements are serialized in server controls and you have to choose all or none. Happy coding.