Lo más importante del controlador es que funciona como intermediario entre el modelo y la vista, de forma que ningún usuario accede directamente a los datos persistentes o a la base de datos, dotando de esta forma a la aplicación de una robustez mayor y disminuyendo notablemente la complejidad del código para los desarrolladores.
Controladores
En ASP.NET MVC los controladores responden a una entrada del usuario como por ejemplo cuando presionan un botón de guardar, de esta forma colabora con las diferentes capas de la aplicación como el modelo y la vista.
Veamos en la siguiente imagen como luce el código de un controlador estándar que se genera en una plantilla en ASP.NET MVC:
Como podemos ver, quien realmente lleva el peso del funcionamiento del controlador son los métodos denominados acciones de controlador, si nos fijamos en el código tenemos 3 acciones concretas, Index(), About() y el Contact(), estas acciones al ser invocadas retornarán lo que su programación interna les indique, en el caso particular del ejemplo vemos que todas las acciones generan un mensaje y retornan una vista.
Resultados de las Acciones
En el curso de la aplicación un controlador le indica a ASP.NET MVC que debe hacer y el orden, más no le dice como, gracias a esto logramos la separación entre los ámbitos del entorno de desarrollo; por ejemplo si el controlador en su lógica de acción indica que se debe generar una vista, es el framework el que se encarga de hacer esto, el controlador por sí mismo no la genera.
Hemos hablado de las vistas, pero esto no es lo único que puede retornar un controlador, podemos retornar otros tipos de resultados y como no es óptimo generarlos manualmente, veremos a continuación algunos de los resultados que podemos generar con la ayuda de las clases de ASP.NET MVC:
Como podemos ver el framework tiene una respuesta para casi cualquier caso que se nos pueda presentar al momento de retornar un resultado desde la acción de un controlador.