Every request that comes to your application is handled by a controller. In ASP.NET Core MVC, controllers are .NET classes that contain the logic required to handle a request. In Chapter 3, I explained that the role of the controller is to encapsulate your application logic. This means controllers are responsible for processing incoming requests, performing operations on the domain model, and selecting views to render to the user.
The controller is free to handle the request any way it sees fit as long as it doesn’t stray into the areas of responsibility that belong to the model and view. ...