Coming from Monorail they have a similar concept with their ViewComponents. The component has a Initialize and Render method that can be overridden, so you can give your components/controls some logic
Two things strike me as a smelly:
1) Code Behind. I don't think there should be any, it will just get confusing and you will end with people doing some crazy stuff trying to mush webforms into mvc.
2) User Controllers. Out of the box there is no IoC so the default factory will new them up with Activator.Createinstance... bad, bad, bad
So what would my solution be.
I would create a ViewComponent base class for handling all my setup. It would probably just have an Initialize method taking ControllerContext. All my presentation logic would go in there so it is testable. all my domain logic would be done in services that get injected into the constructor of my ViewComponent.
I would have a base ViewComponentControl that simply used IoC to locate the correct ViewComponent class and Initialize it. Now my UserControls just inherit from my ViewComponentControl, use the view like normal, and create a separate ViewComponent subclass to handle any setup, config, and presentation logic.
I would probably run fxcop rules to ensure my code behind files were empty.