ASP.NET MVC comes with the promise that it makes it easier for you to write cleaner and more testable code. This is great, except that it doesn’t come out of the box.
For sure, ASP.NET MVC is based on some infrastructure that makes this possible and easier than in Web Forms. A lot, however, is left to you—the developer—and to your programming discipline and design vision.
Architecturally speaking, the controller is just the same as the code-behind class in Web Forms. It is part of the presentation layer, and in some way it exists to forward requests to the back end of the application.
Without development discipline, the controller can easily grow as messy and inextricable as an old-fashioned code-behind class. So it isn’t just choosing ASP.NET MVC that determines whether you’re safe with regard to code cleanness and quality.
It is design skills. It is about an embedded implementation of the Separation of Concerns principle. It is education. It is ability of using brains and thinking. It is keeping pure software technology to the corner to bring it back when design is clear. And clean.