Sdílet prostřednictvím


Vytvoření akce (C#)

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.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public string SayHello()
        {
            return "Hello!";
        }
    }
}

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.cs

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class WorkController : Controller
    {
        [NonAction]
        public string CompanySecrets()
        {
            return "This information is secret.";
        }
    }
}

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)