Programování

Jak používat směrování atributů v ASP.NET Core

Směrovací middleware v ASP.NET Core je schopen mapovat příchozí požadavky na příslušné obslužné rutiny trasy. Směrování v ASP.NET Core můžete nastavit dvěma různými způsoby: směrování založené na atributech a směrování založené na konvencích.

Na rozdíl od směrování založeného na konvencích, ve kterém jsou informace o směrování zadány na jednom místě, umožňuje směrování atributů implementovat směrování zdobením metod akce pomocí atributů. Tento článek představuje diskusi o tom, jak můžeme pracovat s směrováním založeným na atributech v ASP.NET Core MVC.

Chcete-li pracovat s příklady kódu uvedenými v tomto článku, měli byste mít ve svém systému nainstalovanou Visual Studio 2019. Pokud ještě nemáte kopii, můžete si stáhnout Visual Studio 2019 zde.

Vytvořte projekt ASP.NET Core 3.1 MVC v sadě Visual Studio 2019

Nejprve si vytvořme projekt ASP.NET Core ve Visual Studiu 2019. Za předpokladu, že je ve vašem systému nainstalovaná Visual Studio 2019, vytvořte nový projekt ASP.NET Core ve Visual Studiu podle níže uvedených kroků.

  1. Spusťte Visual Studio IDE.
  2. Klikněte na „Vytvořit nový projekt“.
  3. V okně „Vytvořit nový projekt“ vyberte ze zobrazeného seznamu šablon „Webová aplikace ASP.NET Core“.
  4. Klikněte na Další.
  5. V okně „Konfigurace nového projektu“ zadejte název a umístění nového projektu.
  6. Volitelně zaškrtněte políčko „Umístit řešení a projekt do stejného adresáře“, podle vašich preferencí.
  7. Klikněte na Vytvořit.
  8. V okně „Vytvořit novou webovou aplikaci ASP.NET Core“, které se zobrazí dále, vyberte jako běhový modul .NET Core a z rozevíracího seznamu v horní části vyberte ASP.NET Core 3.1 (nebo novější).
  9. Vyberte „Webová aplikace (Model-View-Controller)“ jako šablonu projektu a vytvořte novou aplikaci ASP.NET Core MVC.
  10. Ujistěte se, že políčka „Povolit podporu Dockeru“ a „Konfigurovat pro HTTPS“ nejsou zaškrtnuta, protože zde tyto funkce nebudeme používat.
  11. Ujistěte se, že je ověřování nastaveno na „Bez ověřování“, protože také nebudeme používat ověřování.
  12. Klikněte na Vytvořit.

Následující kroky vytvoří nový projekt ASP.NET Core MVC v sadě Visual Studio 2019. Tento projekt použijeme v níže uvedených částech, abychom ilustrovali, jak můžeme pracovat se směrováním atributů v ASP.NET Core 3.1.

Vytvořte třídu řadiče v ASP.NET Core MVC

Vytvořte nový řadič s názvem DefaultController a nahraďte výchozí zdrojový kód DefaultController následujícím kódem:

  veřejná třída DefaultController: Controller

    {

[Trasa("")]

[Trasa („výchozí“)]

[Trasa („Výchozí / Rejstřík“)]

veřejný index ActionResult ()

        {

vrátit nový EmptyResult ();

        }

[Route ("Default / GetRecordsById / {id}")]

public ActionResult GetRecordsById (int id)

        {

řetězec str = řetězec. Formát

("ID předané jako parametr je: {0}", id);

návrat Ok (str);

        }

    }

Použijte směrování atributů na úrovni řadiče v ASP.NET Core

Směrování atributů lze použít na úrovni řadiče i metody akce. Pokud použijeme atribut route na úrovni řadiče, pak je trasa použitelná pro všechny akční metody tohoto řadiče.

Pokud prozkoumáte naši třídu DefaultController, zjistíte, že při určování šablony trasy pro metody akcí se výchozí trasa použije vícekrát. Následující fragment kódu ukazuje, jak můžete určit různé atributy trasy na úrovni řadiče, abyste mohli flexibilněji využívat směrování atributů.

[Trasa („výchozí“)]

veřejná třída DefaultController: Controller

{

[Trasa("")]

[Trasa („Rejstřík“)]

veřejný index ActionResult ()

  {

vrátit nový EmptyResult ();

   }

[HttpGet]

Trasa („Výchozí / GetRecordsById / {id}“)]

public ActionResult GetRecordsById (int id)

  {

string str = string.Format ("ID předané jako parametr je: {0}", id);

návrat Ok (str);

   }

}

Při použití atributů trasy na úrovni řadiče i metody akce se šablona trasy použitá na úrovni řadiče předloží k šabloně trasy zadané na úrovni metody akce.

Možná budete často potřebovat společnou předponu pro svůj ovladač. Pokud tak učiníte, měli byste použít atribut [RoutePrefix], jak je ukázáno v níže uvedeném fragmentu kódu.

[RoutePrefix („služby“)]

public class HomeController: Controller

{

// Metody akce

}

Použijte směrování atributů na úrovni metody akce v ASP.NET Core

Viz výše uvedená třída DefaultController. Jak vidíte, v metodě Index třídy DefaultController jsme určili tři trasy. To znamená, že každá z následujících adres URL vyvolá metodu akce Index () DefaultController.

// localhost: 11277

// localhost: 11277 / home

// localhost: 11277 / home / index

Stejně jako ve směrování založeném na konvencích můžete zadat parametry i ve směrování založeném na atributech. Jinými slovy, směrování založené na atributech umožňuje určit atributy trasy s parametry. Příkladem je metoda akce GetRecordsById třídy DefaultController uvedená výše.

Všimněte si, že „{id}“ na zadané trase představuje parametr nebo zástupný znak. Parametr id v tomto příkladu může být cokoli, například řetězec nebo celé číslo. Co když chcete omezit parametr pouze na celá čísla? Toho lze dosáhnout pomocí omezení.

V metodě akce použijte atribut omezení trasy

Omezení trasy se používají k zmaření neplatných požadavků na akce řadiče. Můžete například chtít zajistit, aby parametr předaný metodě akce byl vždy celé číslo. Syntaxe používání omezení trasy je {parametr: omezení}. Následující fragment kódu to ilustruje. Všimněte si, že parametr id je zde vždy celé číslo.

[Route ("Default / GetRecordsById / {id: int}")]

public ActionResult GetRecordsById (int id)

{

string str = string.Format ("ID předané jako parametr je: {0}", id);

návrat Ok (str);

}

Použijte volitelné parametry ve specifikacích trasy atributů

Můžete také použít volitelné parametry ve své specifikaci trasy. Následující fragment kódu ukazuje, jak toho lze dosáhnout. Všimněte si, že metoda akce by v tomto případě byla provedena, i když parametr id není předán.

[Route ("Sales / GetSalesByRegionId / {id?}")]

Je důležité si uvědomit, že při použití směrování atributů nehraje při výběru, která metoda akce bude provedena, ani název řadiče, ani název metody akce. Podívejme se na příklad. Následující fragment kódu ukazuje, jak byla změněna adresa URL ve specifikaci trasy pro metodu akce GetRecordsById.

[Route („Home / GetRecordsById / {id: int}“)]

public ActionResult GetRecordsById (int id)

{

string str = string.Format ("ID předané jako parametr je: {0}", id);

návrat Ok (str);

}

Nyní můžete vyvolat metodu akce GetRecordsById pomocí následující adresy URL:

// localhost: 11277 / home / GetRecordsById / 1

V metodě akce použijte více omezení směrování atributů

Je také možné použít na parametr více omezení. Následující fragment kódu ukazuje, jak toho lze dosáhnout. Všimněte si, že minimální hodnota parametru id by měla být 1, jinak bude vrácena chyba 404.

[Route ("Default / GetRecordsById / {id: int: min (1)}")]

public ActionResult GetRecordsById (int id)

{

string str = string.Format ("ID předané jako parametr je: {0}", id);

návrat Ok (str);

}

Použijte slovesa HTTP v trasách atributů v metodě akce

Ve směrování atributů můžete dokonce použít slovesa HTTP. Následující fragment kódu ukazuje, jak toho lze dosáhnout.

[HttpGet]

[Route ("Default / GetRecordsById / {id: int: min (1)}")]

public ActionResult GetRecordsById (int id)

{

string str = string.Format ("ID předané jako parametr je: {0}", id);

návrat Ok (str);

}

Běžně používaná omezení trasy atributů

Zde je seznam nejčastěji používaných omezení trasy v ASP.NET Core.

  • bool - používá se ke shodě s booleovskou hodnotou
  • datetime - slouží k porovnání hodnoty DateTime
  • decimal - slouží k porovnání desítkové hodnoty
  • double - používá se k porovnání 64bitové hodnoty s plovoucí desetinnou čárkou
  • float - používá se k porovnání 32bitové hodnoty s plovoucí desetinnou čárkou
  • guid - používá se ke shodě s hodnotou GUID
  • int - používá se ke shodě s 32bitovou celočíselnou hodnotou
  • long - používá se ke shodě s 64bitovou celočíselnou hodnotou
  • max - slouží k porovnání celého čísla s maximální hodnotou
  • min - slouží k porovnání celého čísla s minimální hodnotou
  • minlength - slouží k přiřazení řetězce k minimální délce
  • regex - používá se k porovnání regulárního výrazu

Vytvořte vlastní omezení trasy atributů

Můžete také vytvořit svá vlastní omezení trasy vytvořením třídy, která rozšiřuje rozhraní IRouteConstraint a implementuje metodu Match, jak je ukázáno v níže uvedeném fragmentu kódu.

veřejná třída CustomRouteConstraint: IRouteConstraint

    {

public bool Match (HttpContext httpContext, IRouter route,

řetězec routeKey,

Hodnoty RouteValueDictionary, RouteDirection routeDirection)

        {

hodit nový NotImplementedException ();

        }

    }

Použijte náhradu tokenu v trasách atributů na úrovni řadiče

Směrování atributů v ASP.NET Core MVC poskytuje podporu pro další zajímavou funkci s názvem nahrazení tokenu. Ve svém řadiči můžete použít tokeny [action], [area] a [controller] a tyto tokeny budou nahrazeny názvy akcí, oblastí a řadičů. Následující fragment kódu ukazuje, jak toho lze dosáhnout.

[Trasa („[správce] / [akce]“)]

public class HomeController: Controller

{

soukromé jen pro čtení ILogger _logger;

veřejný HomeController (ILogger logger)

   {

_logger = záznamník;

   }

veřejný index IActionResult ()

   {

návrat View ();

   }

// Jiné metody akce

}

Směrování atributů v ASP.NET Core vám poskytuje větší kontrolu a flexibilitu nad identifikátory URI ve vaší webové aplikaci. I když lze směrování založené na konvencích nakonfigurovat na jednom místě, které lze následně použít na všechny řadiče ve vaší aplikaci, je obtížné podporovat určité vzory URI (například verze API) pomocí směrování založeného na konvencích.

Pomocí směrování atributů můžete oddělit názvy řadičů a akcí od šablony trasy. Ve svých aplikacích ASP.NET Core můžete dokonce použít kombinaci směrování založeného na konvencích a směrování založeného na atributech.

Jak dělat více v ASP.NET Core:

  • Jak předat parametry akčním metodám v ASP.NET Core MVC
  • Jak používat analyzátory API v ASP.NET Core
  • Jak používat tokeny dat trasy v ASP.NET Core
  • Jak používat správu verzí API v ASP.NET Core
  • Jak používat objekty přenosu dat v ASP.NET Core 3.1
  • Jak zpracovat chyby 404 v ASP.NET Core MVC
  • Jak používat vkládání závislostí ve filtrech akcí v ASP.NET Core 3.1
  • Jak používat vzor možností v ASP.NET Core
  • Jak používat směrování koncových bodů v ASP.NET Core 3.0 MVC
  • Jak exportovat data do aplikace Excel v ASP.NET Core 3.0
  • Jak používat LoggerMessage v ASP.NET Core 3.0
  • Jak odesílat e-maily v ASP.NET Core
  • Jak protokolovat data na SQL Server v ASP.NET Core
  • Jak naplánovat úlohy pomocí Quartz.NET v ASP.NET Core
  • Jak vrátit data z webového rozhraní API ASP.NET Core
  • Jak formátovat data odpovědí v ASP.NET Core
  • Jak konzumovat webové rozhraní API ASP.NET Core pomocí RestSharp
  • Jak provádět asynchronní operace pomocí nástroje Dapper
  • Jak používat příznaky funkcí v ASP.NET Core
  • Jak používat atribut FromServices v ASP.NET Core
  • Jak pracovat s cookies v ASP.NET Core
  • Jak pracovat se statickými soubory v ASP.NET Core
  • Jak používat Middleware pro přepis adres URL v ASP.NET Core
  • Jak implementovat omezení rychlosti v ASP.NET Core
  • Jak používat Azure Application Insights v ASP.NET Core
  • Používání pokročilých funkcí NLog v ASP.NET Core
  • Jak zpracovat chyby v ASP.NET Web API
  • Jak implementovat globální zpracování výjimek v ASP.NET Core MVC
  • Jak zacházet s hodnotami null v ASP.NET Core MVC
  • Pokročilé správy verzí v ASP.NET Core Web API
  • Jak pracovat s pracovními službami v ASP.NET Core
  • Jak používat rozhraní Data Protection API v ASP.NET Core
  • Jak používat podmíněný middleware v ASP.NET Core
  • Jak pracovat se stavem relace v ASP.NET Core
  • Jak psát efektivní řadiče v ASP.NET Core
$config[zx-auto] not found$config[zx-overlay] not found