TOC

This article has been localized into Spanish by the community.

Controladores:

Acciones

Ya que un Controller es una clase regular de .NET, puede tener campos, propiedades y métodos. Especialmente los métodos de una clase Controller son interesantes, porque son la conexión entre el explorador (y por lo tanto el usuario) y tu aplicación. Por esa razón, los métodos de un Controller son referidos como acciones - un método usualmente corresponde a una acción en tu aplicación, el cual luego retorna algo al explorador/usuario.

Ya que un explorador trabaja llamando una URL, necesitas algo que traduce URLs a un Controller correspondiente y una acción (método). Por ejemplo, el explorador puede solicitar una URL como /products/1/ y luego tu que tu ProductsController maneje esta solicitud con un método/acción llamado Details. Esto es hecho con el concepto de ruteo, algo sobre lo que hablaremos mucho mas en alguna parte de este tutorial, pero por ahora, solo conoce que el Enrutamiento o Ruteo es lo que conecta las URLs con las acciones en tus Controllers.

Cuando creas un Controller, ten en mente que todos los métodos públicod en una clase Controller es considerada una Actio. Esto significa que sí tu has definido tus reglas de ruteo atrapa-todo para tu Controller (y eso es algo común de hacer), todos los métodos en tu Controller que no quieras que el usuario final pueda llamar, asegurate de marcarlo como private o privado. Como una alternativa, sí tu realmente necesitas un método público pero inaccesible por URL, puedes marcar el método con el atributo [NonAction].

Verbos de acción

Para tener mas control de como tus acciones son llamadas, puedes decorarlas con los llamados Verbos de Accion. Estos son, de hecho, atributos regulares de .NET, los cuales le dicen a .NET como una acción puede ser accesada. Sin estos atributos, una acción puede ser accedida usando todos los posibles verbos HTTP (los más comunes son GET y POST), pero puedes cambiarlo bastante fácil.

[HttpGet]
public IActionResult Edit()
{
return Content("Edit");
}

Ahora la acción Editar puede ser solamente con una solicitud GET. Esto tiene el beneficio agregado de permitirte tener múltiples métodos con el mismo nombre, siempre y cuando ellos no acepten el mismo método de solicitud. Así que por ejemplo, puedes tener dos métodos Edit: El primero puediera estar disponible para solicitudes GET y generar la FORM o formulario para editar el elemento, mientras que el segundo podrá solamente estar disponible para solicitudes POST y ser usado para actualizar el elemento cuando el FORM o formulario sea regresada al servidor. Eso puede verse así:

[HttpGet]
public IActionResult Edit()
{
return View();
}

[HttpPost]
public IActionResult Edit(Product product)
{
product.Save();
return Content("Product updated!");
}

Ahora cada vez que una respuesta sea hecha al método/acción Edit, el método actual que responde la solicitud estará basado en, ya sea un método GET o un método POST

En algunas situaciones, puedes querer especificar verbos de acción múltiple, por ejemplo para especificar que una acción puede ser accedida por solicitudes POST y GET pero no por otros tipos. Eso es tan sencillo como:

[HttpGet]
[HttpPost]      
public IActionResult Edit()
{
...

Resumen

Ahora hemos aprendido mas sobre uno de los aspectos mas importantes de un Controller. Las acciones, algunas veces referidas como Métodos de Acción (Action Methods) o solamente métodos, ya que eso son basicamente. En el siguiente artículo discutiremos el resultado de estas acciones, referidos como Resultados de Acción (Action Result)

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!