Introducción a los controladores en ASP.NET Core

En este tutorial, aprenderás los conceptos básicos de los controladores (Controller) en ASP.NET Core. Aprenderás qué es un controlador y cuáles son sus responsabilidades. Aprenderás a agregar controladores, qué son los métodos de acción del controlador y el tipo de retorno de estos métodos (es decir, resultados de la acción).
¿Qué es un controlador?
El Controller es el primer componente en recibir la solicitud del Usuario. Cuando un usuario ingresa una URL en el navegador, el motor de enrutamiento de ASP.NET Core MVC asigna la solicitud a un controlador específico.
Por ejemplo, cuando el usuario entra a la siguiente url
http://localhost/Customer/List
Se invoca el controlador llamado CustomerController. Luego invoca el método List
, el cual genera la respuesta y la devuelve al usuario.
Responsabilidades del controlador
El controlador tiene tres responsabilidades principales
- Manejar la solicitud. El controlador es responsable de manejar la solicitud del usuario.
- Construir un modelo. El método Action ejecuta la lógica de la aplicación y construye un modelo
- Enviar la respuesta. Finalmente, debe devolver el Resultado en HTML/File/Json/XML o cualquiera que sea el formato solicitado por el usuario.
Agregar un controlador
Los controladores no son más que clases regulares de .NET. Por convención, los controladores residen en la carpeta de Controllers a nivel raíz del proyecto.
Puedes crear un controlador seleccionando la carpeta Controllers y haciendo clic con el botón derecho y seleccionando la opción Controlador como se muestra a continuación.
A continuación, se te presentan las diversas opciones de plantilla. Hay dos opciones principales aquí.
- Controlador MVC
- Controlador API
Tanto MVC como API Controller heredan de la misma clase de controlador y no hay mucha diferencia entre ellos, excepto que se espera que API Controller devuelva los datos serializados para formatear al cliente.
Además, tenemos tres opciones en ambos tipos de controladores.
- Vacío
- Con acciones de lectura/escritura
- Con vistas, usando el Entity Framework
Hay otra forma de crear un controlador. Haciendo clic derecho en la carpeta Controllers y seleccione Agregar nuevo elemento y seleccione el Controlador MVC en la Plantilla. Esto creará un controlador vacío.
Los controladores en ASP.NET Core heredan de la clase Controller
, que a su vez hereda de ControllerBaseClass
. Estas dos clases base proporcionan varios métodos auxiliares útiles.
La clase de controlador debe satisfacer al menos una de las siguientes condiciones
- El nombre de la clase tiene el sufijo "Controller".
- La clase hereda de una clase cuyo nombre tiene el sufijo "Controller".
- La clase está decorada con el atributo
[Controller]
.
Métodos de acción
Cualquier método público expuesto por un controlador se denomina método de acción.
El método de acción se llama cuando un usuario ingresa una URL particular en el navegador.
Por ejemplo, http://localhost/Customer/List invocará el método de acción List
en CustomerController
.
Los métodos de acción deben llamar a la capa de servicio para responder a la solicitud. La capa de servicio generalmente debe consultar o actualizar la base de datos mediante la capa de acceso a datos y luego mapear los resultados en un modelo y devolverlo al método de acción.
El método de acción luego invoca la Vista (View
) con el modelo para generar la respuesta.
Cualquier método público en una clase de controlador puede ser invocado por cualquier persona ubicada en cualquier parte del mundo. Así que ten cuidado cuando coloques un método público en el controlador.
Al crear un método de acción, debes recordar lo siguiente
- Los métodos de acción deben ser un método público
- El método de acción no puede ser un método estático o un método de extensión.
- No se puede utilizar el Constructor, getter o setter.
- Los métodos heredados no se pueden utilizar como método de acción.
- Métodos de acción No pueden contener parámetros ref o out.
- Los métodos de acción no pueden contener el atributo [NonAction].
- Los métodos de acción no se pueden sobrecargar
Enrutamiento
El módulo de enrutamiento es una parte importante de ASP.NET Core
. Este módulo inspecciona las direcciones URL entrantes e invoca las acciones de controlador correctas asociadas con esa solicitud.
Por ejemplo, la URL entrante http://localhost/Customer/List primero pasa por el módulo de enrutamiento. El módulo de enrutamiento inspecciona esta URL y elige el controlador apropiado para manejar la solicitud. A continuación, crea una instancia del controlador e invoca el método de acción correcto.
Discutiremos en el siguiente tutorial el enrutamiento en ASP.Net core.
Tipos de respuesta
Los métodos de acción son responsables de manejar la solicitud de uso y generar la respuesta que finalmente se muestra al usuario final. La respuesta puede ser una página HTML, Json, XML o un archivo para descargar.
Una acción de controlador puede devolver lo que quiera. Por ejemplo, el siguiente método Action devuelve una cadena.
public string Index() {
return "Hello from Index method of Home Controller";
}
En general, una acción del controlador debe devolver algo llamado Resultado de la acción (Action Result). Cada tipo de retorno como HTML, Json o cadena, etc. tiene su propio Resultado de acción, que hereda de la clase base ActionResult
. La clase base ActionResult
es una clase abstracta.
Por ejemplo, para generar una respuesta HTML, usamos ViewResult
. Para generar un resultado de cadena o texto, usamos ContentResult
. Tanto ViewResult
como ContentResult
heredan de ActionResult
.
El framework de ASP.NET Core MVC tiene soporte integrado para varios tipos de resultados de acción, incluidos
ViewResult
: representa HTML y marcado.EmptyResult
: no representa ningún resultado.RedirectResult
: representa una redirección a una nueva URL.JsonResult
: representa un resultado de notación de objetos de JavaScript que se puede usar en una aplicación AJAX.JavaScriptResult
: representa un script de JavaScript.ContentResult
: representa un resultado de texto.FileContentResult
: representa un archivo descargable (con el contenido binario).FilePathResult
: representa un archivo descargable (con una ruta).FileStreamResult
: representa un archivo descargable (con un flujo de archivos).
Resumen
En este tutorial, aprendiste algunos de los conceptos básicos de los controladores de ASP.NET Core MVC, las acciones (Action) del controlador y los resultados de las acciones (Action Result) del controlador. En los próximos artículos, inspeccionaremos cada uno de ellos en detalle.