Sdílet prostřednictvím


Vytvoření akce (VB)

od Microsoftu

Zjistěte, jak přidat novou akci do kontroleru ASP.NET MVC. Seznamte se s požadavky na to, aby metoda byla akce.

Cílem tohoto kurzu je vysvětlit, jak můžete vytvořit novou akci kontroleru. Dozvíte se o požadavcích metody akce. Dozvíte se také, jak zabránit zveřejnění metody jako akce.

Přidání akce do kontroleru

Novou akci přidáte do kontroleru přidáním nové metody do kontroleru. Například kontroler v seznamu 1 obsahuje akci s názvem Index() a akci s názvem SayHello(). Obě metody jsou vystavené jako akce.

Výpis 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 byla metoda vystavena vesmíru jako akce, musí splňovat určité požadavky:

  • Metoda musí být veřejná.
  • Metoda nemůže být statická.
  • Metoda nemůže být rozšiřující.
  • Metoda nemůže být konstruktor, getter ani setter.
  • Metoda nemůže mít otevřené obecné typy.
  • Metoda není metodou základní třídy kontroleru.
  • Metoda nemůže obsahovat parametry ref nebo out .

Všimněte si, že pro návratový typ akce kontroleru neexistují žádná omezení. Akce kontroleru může vrátit řetězec, DateTime, instanci třídy Random nebo void. Rozhraní ASP.NET MVC převede jakýkoli návratový typ, který není výsledkem akce, na řetězec a vykreslí ho do prohlížeče.

Když do kontroleru přidáte jakoukoli metodu, která tyto požadavky neporušuje, zobrazí se metoda jako akce kontroleru. Buďte tady opatrní. Akci kontroleru může vyvolat kdokoli, kdo je připojený k internetu. Nevytvádějte například akci kontroleru DeleteMyWebsite().

Zabránění vyvolání veřejné metody

Pokud potřebujete vytvořit veřejnou metodu ve třídě kontroleru a nechcete metodu vystavit jako akci kontroleru, můžete zabránit vyvolání metody pomocí atributu <NonAction> . Například kontroler ve výpisu 2 obsahuje veřejnou metodu s názvem CompanySecrets(), která je opatřena atributem <NonAction> .

Výpis 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

Pokud se pokusíte vyvolat akci kontroleru CompanySecrets() zadáním příkazu /Work/CompanySecrets do adresního řádku prohlížeče, zobrazí se na obrázku 1 chybová zpráva.

Vyvolání metody NonAction

Obrázek 01: Vyvolání metody NonAction (kliknutím zobrazíte obrázek v plné velikosti)