TOC

This article has been localized into Spanish by the community.

Controladores:

Action Results

En el capítulo previo, discutimos los Actions (Acciones), que son los métodos definidos en un Controller. Los Actions o acciones son invocados cuando una URL solicitada es igual a un Action en un Controller (esto es logrado por el sistema de ruteo). Cuando el Action (método) termina su trabajo, usualmente regresa algo al cliente y eso frecuentemente estará usando la interface IActionResult (o Task<IActionResult> sí el método es asíncrono)

Como tu Controller hereda la clase base Controller (Microsoft.AspNetCore.Mvc.Controller), se nos suministra un gran rango de métodos de ayuda (helper methods) para generar la respuesta (el action result o acción de resultado). Un ejemplo de este tipo de métodos ya ha sido usado en este tutorial: El método View(). Este tomará el archivo View (o vista) correspondiente y lo convertirá en una instancia de la clase ViewResult, la cual implementa la interface IActionResult. Después de eso, ASP. NET MVC automáticamente la transformará en una respuesta al explorador - en este caso en la forma de un código de estatus "OK" y luego un cuerpo de HTML.

Una vista esta lejos de ser la única respuesta posible de una acción del Controller, Ya que el resultado eventualmente será retornado al explorador, los métodos disponibles deben cubrir todas las posibles resultados de una solicitud HTTP, así que la acción del Controller puede también resultar en un redirect o redirección, un 404 (Página no encontrada) o alguno de los otros códigos de estatus HTTP. Aquí hay una lista incompleta de los métodos mas interesantes y útiles para generar un Acion Result (acción de resultado):

  • Content() - regresa la cadena especificada como texto plano al cliente (usualmente un explorador).
  • View() - regresa una Vista o View al cliente
  • PartialView() - regresa una vista parcial o Partial View (veremos mas de esto en este tutorial) al cliente.
  • File() - regresa el contenido de un archivo especifico al cliente
  • Json() - regresa una respuesta JSON al cliente
  • Redirect() y RedirectPermanent() - regresa una respuesta de redirección al explorador (temporal o permanente), redireccionando al usuario a otra URL
  • StatusCode() - regresa un código de estatus personalizado al cliente

Hay muchos mas, y desde luego eres libre de implementar el que desees o generar el resutado tu mismo - la mayoría de estos métodos simplemente generan las clases relevantes con las propiedades establecidas. Por ejemplo, el método Content() genera una instancia de la clase ContentResult y llena la propiedad Content con el valor que le pasas al método.

Ya que hay muchos tipos de respuestas que implementan la interfaz IActionResult, tus acciones pueden regresar cualquiera de ellas, basadas en la lógica de tu método. Un uso común para esto es regresar ya sea una View o vista o una pieza de contenido si el contenido solicitado es encontrado, o un error 404 (Página no encontrada) si no es encontrado. Podría verse así:

public IActionResult Details(int id)  
{  
	Product product = GetProduct(id);
	if (product != null)  
		return View(product);  
	return NotFound();  
}

En la primera línea, intentamos cargar el producto usando un método GetProduct(). Si el producto es encontrado, lo regresamos dentro de la vista usando el método View() - si no, regresamos un error 404 usando el método de ayuda (o helper method) NotFound(), el cual básicamente crea una instancia de la clase NotFoundResult. En este caso, hay dos posibles resultados de la acción, pero podrían ser más, si es necesario - eres libre de regresar cualquier cosa que implemente la interfaz IActionResult.

Resumen

UnAction o acción es un método en un Controller o controlador, que normalmente es accesible por una URL gracias al sistema de Ruteo o enrutamineto,. Una accion o Action normalmente regresa un Action Result, basado en la interfaz IActionResult. Hay muchos métodos disponibles para ayudarte en generar el resultado deseado para tus Actions o acciones. Estos son los aspectos más importantes a entender sobre un Controller o controlador de ASP .NET MVC. En los siguientes artículos discutiremos un poco mas profundo en algunos temas avanzados de Controllers.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!