Crear una acción (VB)
por Microsoft
Aprenda a agregar una nueva acción a un controlador ASP.NET MVC. Obtenga información sobre los requisitos para que un método sea una acción.
El objetivo de este tutorial es explicar cómo puede crear una nueva acción de controlador. Aprenderá los requisitos de un método de acción. También aprenderá a evitar que un método se exponga como una acción.
Agregar 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: Controllers\HomeController.vb
<HandleError()> _
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index() As ActionResult
Return View()
End Function
Function SayHello() As String
Return "Hello!"
End Function
End Class
Para exponerse al universo como una acción, un 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 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, un valor DateTime, una instancia de la clase Random o un valor vacío. 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 necesita 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.vb
Public Class WorkController
Inherits System.Web.Mvc.Controller
_
Function CompanySecrets() As String
Return "This information is secret."
End Function
End Class
Si intenta invocar la acción del controlador CompanySecrets() escribiendo /Work/CompanySecrets en la barra de direcciones de su explorador, obtendrá el mensaje de error de la figura 1.
Figura 01: Invocación de un método NonAction (haga clic para ver la imagen a tamaño completo)