Compartir a través de


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.

Invoking a NonAction method

Figura 01: Invocación de un método NonAction (haga clic para ver la imagen a tamaño completo)