Tworzenie akcji (VB)

autor: Microsoft

Dowiedz się, jak dodać nową akcję do kontrolera MVC ASP.NET. Dowiedz się więcej o wymaganiach dotyczących metody, która ma być akcją.

Celem tego samouczka jest wyjaśnienie sposobu tworzenia nowej akcji kontrolera. Poznasz wymagania metody akcji. Dowiesz się również, jak zapobiec uwidocznieniu metody jako akcji.

Dodawanie akcji do kontrolera

Do kontrolera zostanie dodana nowa akcja, dodając nową metodę do kontrolera. Na przykład kontroler w liście 1 zawiera akcję o nazwie Index() i akcję o nazwie SayHello(). Obie metody są uwidocznione jako akcje.

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

Aby uwidocznić wszechświat jako akcję, metoda musi spełniać pewne wymagania:

  • Metoda musi być publiczna.
  • Metoda nie może być metodą statyczną.
  • Metoda nie może być metodą rozszerzenia.
  • Metoda nie może być konstruktorem, getterem ani zestawem.
  • Metoda nie może mieć otwartych typów ogólnych.
  • Metoda nie jest metodą klasy bazowej kontrolera.
  • Metoda nie może zawierać parametrów ref lub out .

Zwróć uwagę, że nie ma żadnych ograniczeń dotyczących typu zwrotnego akcji kontrolera. Akcja kontrolera może zwrócić ciąg, data/godzina, wystąpienie klasy Random lub unieważnić. Struktura ASP.NET MVC przekonwertuje dowolny typ zwracany, który nie jest wynikiem akcji na ciąg i renderuje ciąg w przeglądarce.

Po dodaniu dowolnej metody, która nie narusza tych wymagań kontrolera, metoda jest uwidoczniona jako akcja kontrolera. Zachowaj ostrożność tutaj. Akcja kontrolera może być wywoływana przez każdą osobę połączoną z Internetem. Nie należy na przykład tworzyć akcji kontrolera DeleteMyWebsite().

Zapobieganie wywoływaniu metody publicznej

Jeśli musisz utworzyć metodę publiczną w klasie kontrolera i nie chcesz uwidaczniać metody jako akcji kontrolera, możesz uniemożliwić wywoływanie metody za pomocą atrybutu <NonAction> . Na przykład kontroler w liście 2 zawiera metodę publiczną o nazwie CompanySecrets(), która jest ozdobiona atrybutem <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

Jeśli spróbujesz wywołać akcję kontrolera CompanySecrets(), wpisując ciąg /Work/CompanySecrets na pasku adresu przeglądarki, zostanie wyświetlony komunikat o błędzie na rysunku 1.

Wywoływanie metody NonAction

Rysunek 01. Wywoływanie metody NonAction (Kliknij, aby wyświetlić obraz pełnowymiarowy)