Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
por Microsoft
Obtenga información sobre cómo agregar una nueva acción a un controlador ASP.NET MVC. Obtenga información sobre los requisitos de un método para que sea una acción.
El objetivo de este tutorial es explicar cómo puede crear nuevos controladores ASP.NET MVC. Obtendrá información sobre los requisitos de un método de acción. También aprenderá a evitar que un método se exponga como una acción.
Adición de una acción a un controlador
Para agregar una nueva acción a un controlador, agregue un nuevo método al controlador. Por ejemplo, el controlador de la lista 1 contiene una acción denominada Index() y una acción denominada SayHello(). Ambos métodos se exponen como acciones.
Lista 1: Controladores\HomeController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public string SayHello()
{
return "Hello!";
}
}
}
Para exponerse al universo como una acción, el método debe cumplir ciertos requisitos:
- El método debe ser público.
- El método no puede ser un método estático.
- El método no puede ser un método de extensión.
- El método no puede ser un constructor, captador o establecedor.
- El método no puede tener tipos genéricos abiertos.
- El método no es un método de la clase base del controlador.
- El método no puede contener los parámetros ref o out.
Observe que no hay restricciones en el tipo de valor devuelto de una acción de controlador. Una acción de controlador puede devolver una cadena, una fecha y hora, una instancia de la clase Random o void. El marco de ASP.NET MVC convertirá cualquier tipo de valor devuelto que no sea un resultado de acción en una cadena y representará la cadena en el explorador.
Al agregar cualquier método que no infrinja estos requisitos a un controlador, el método se expone como una acción de controlador. Tenga cuidado con esto. Cualquier persona conectada a Internet puede invocar una acción de controlador. Por ejemplo, no cree una acción de controlador DeleteMyWebsite().
Impedir que se invoque un método público
Si tiene que crear un método público en una clase de controlador y no desea exponer el método como una acción de controlador, puede impedir que el método se invoque mediante el atributo [NonAction]. Por ejemplo, el controlador de la lista 2 contiene un método público denominado CompanySecrets() que está decorado con el atributo [NonAction].
Lista 2 - Controllers\WorkController.cs
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
public class WorkController : Controller
{
[NonAction]
public string CompanySecrets()
{
return "This information is secret.";
}
}
}
Si intenta invocar la acción del controlador CompanySecrets() escribiendo /Work/CompanySecrets en la barra de direcciones del explorador, obtendrá el mensaje de error que se muestra en la figura 1.
Figura 01: Invocación de un método NonAction (Haga clic para ver la imagen de tamaño completo)