Criar uma ação (VB)

pela Microsoft

Saiba como adicionar uma nova ação a um controlador MVC ASP.NET. Saiba mais sobre os requisitos para que um método seja uma ação.

O objetivo deste tutorial é explicar como você pode criar uma nova ação do controlador. Você aprenderá sobre os requisitos de um método de ação. Você também aprenderá a impedir que um método seja exposto como uma ação.

Adicionando uma ação a um controlador

Adicione uma nova ação a um controlador adicionando um novo método ao controlador. Por exemplo, o controlador na Listagem 1 contém uma ação chamada Index() e uma ação chamada SayHello(). Ambos os métodos são expostos como ações.

Listagem 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 ser exposto ao universo como uma ação, um método deve atender a determinados requisitos:

  • O método deve ser público.
  • O método não pode ser um método estático.
  • O método não pode ser um método de extensão.
  • O método não pode ser um construtor, getter ou setter.
  • O método não pode ter tipos genéricos abertos.
  • O método não é um método da classe base do controlador.
  • O método não pode conter parâmetros ref ou out .

Observe que não há restrições no tipo de retorno de uma ação do controlador. Uma ação do controlador pode retornar uma cadeia de caracteres, um DateTime, uma instância da classe Random ou void. O ASP.NET estrutura MVC converterá qualquer tipo de retorno que não seja um resultado de ação em uma cadeia de caracteres e renderizará a cadeia de caracteres para o navegador.

Quando você adiciona qualquer método que não viole esses requisitos a um controlador, o método é exposto como uma ação do controlador. Tenha cuidado aqui. Uma ação do controlador pode ser invocada por qualquer pessoa conectada à Internet. Não crie, por exemplo, uma ação de controlador DeleteMyWebsite().

Impedindo que um método público seja invocado

Se você precisar criar um método público em uma classe de controlador e não quiser expor o método como uma ação do controlador, poderá impedir que o método seja invocado usando o <atributo NonAction> . Por exemplo, o controlador na Listagem 2 contém um método público chamado CompanySecrets() decorado com o <atributo NonAction> .

Listagem 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

Se você tentar invocar a ação do controlador CompanySecrets() digitando /Work/CompanySecrets na barra de endereços do navegador, receberá a mensagem de erro na Figura 1.

Invocando um método NonAction

Figura 01: Invocando um método NonAction (clique para exibir a imagem em tamanho real)