Programovanie

Ako používať smerovanie atribútov v ASP.NET Core

Smerovací middleware v ASP.NET Core je schopný mapovať prichádzajúce požiadavky na príslušné obslužné rutiny trasy. Smerovanie v ASP.NET Core môžete nastaviť dvoma rôznymi spôsobmi: smerovanie založené na atribútoch a smerovanie založené na konvenciách.

Na rozdiel od smerovania založeného na konvenciách, v ktorom sú smerovacie informácie zadané na jednom mieste, umožňuje smerovanie atribútov implementovať smerovanie zdobením vašich metód akcie atribútmi. Tento článok predstavuje diskusiu o tom, ako môžeme pracovať so smerovaním na základe atribútov v ASP.NET Core MVC.

Ak chcete pracovať s príkladmi kódu uvedenými v tomto článku, mali by ste mať vo svojom systéme nainštalovanú aplikáciu Visual Studio 2019. Ak ešte nemáte kópiu, môžete si tu stiahnuť Visual Studio 2019.

Vytvorte projekt ASP.NET Core 3.1 MVC v Visual Studio 2019

Najprv si vytvoríme projekt ASP.NET Core v Visual Studio 2019. Za predpokladu, že je vo vašom systéme nainštalované Visual Studio 2019, vytvorte nový projekt ASP.NET Core v Visual Studio podľa krokov uvedených nižšie.

  1. Spustite Visual Studio IDE.
  2. Kliknite na „Vytvoriť nový projekt“.
  3. V okne „Vytvoriť nový projekt“ vyberte zo zobrazeného zoznamu šablón „Webová aplikácia ASP.NET Core“.
  4. Kliknite na Ďalej.
  5. V okne „Konfigurácia nového projektu“ zadajte názov a umiestnenie nového projektu.
  6. Voliteľne začiarknite políčko „Umiestniť riešenie a projekt do rovnakého adresára“, podľa vašich preferencií.
  7. Kliknite na tlačidlo Vytvoriť.
  8. V nasledujúcom okne „Vytvorenie novej webovej aplikácie ASP.NET Core“ vyberte z rozbaľovacieho zoznamu v hornej časti .NET Core ako modul runtime a ASP.NET Core 3.1 (alebo novší).
  9. Vyberte „Webová aplikácia (Model-View-Controller)“ ako šablónu projektu na vytvorenie novej aplikácie ASP.NET Core MVC.
  10. Skontrolujte, či nie sú začiarknuté políčka „Povoliť podporu Docker“ a „Konfigurovať pre HTTPS“, pretože tu nebudeme tieto funkcie používať.
  11. Skontrolujte, či je overenie nastavené na „Bez overenia“, pretože tiež nebudeme používať overenie.
  12. Kliknite na tlačidlo Vytvoriť.

Nasledovaním týchto krokov vytvoríte nový projekt ASP.NET Core MVC v Visual Studio 2019. Tento projekt použijeme v sekciách nižšie na ilustráciu toho, ako môžeme pracovať so smerovaním atribútov v ASP.NET Core 3.1.

Vytvorte triedu radiča v ASP.NET Core MVC

Vytvorte nový radič s názvom DefaultController a nahraďte predvolený zdrojový kód DefaultController nasledujúcim kódom:

  verejná trieda DefaultController: radič

    {

[Trasa („“)]

[Route („Predvolené“)]

[Route („Predvolené / Register“)]

verejný index ActionResult ()

        {

vrátiť nový EmptyResult ();

        }

[Route („Default / GetRecordsById / {id}“)]

public ActionResult GetRecordsById (int id)

        {

reťazec str = reťazec. Formát

("ID zadané ako parameter je: {0}", id);

návrat Ok (str);

        }

    }

Použite smerovanie atribútov na úrovni radiča v ASP.NET Core

Smerovanie atribútov je možné použiť na úrovni radiča aj metódy akcie. Ak použijeme atribút trasy na úrovni radiča, potom je trasa použiteľná pre všetky metódy akcie daného radiča.

Ak preskúmate našu triedu DefaultController, zistíte, že pri zadávaní šablóny trasy pre metódy akcií sa predvolená trasa použije viackrát. Nasledujúci úryvok kódu ukazuje, ako môžete určiť rôzne atribúty trasy na úrovni radiča, aby ste flexibilnejšie využili smerovanie atribútov.

[Route („Predvolené“)]

verejná trieda DefaultController: radič

{

[Trasa („“)]

[Trasa („Register“)]

verejný index ActionResult ()

  {

vrátiť nový EmptyResult ();

   }

[HttpGet]

Trasa („Predvolené / GetRecordsById / {id}“)]

public ActionResult GetRecordsById (int id)

  {

string str = string.Format ("ID zadané ako parameter je: {0}", id);

návrat Ok (str);

   }

}

Pri použití atribútov trasy na úrovni radiča aj metódy akcie sa šablóna smerovania použitá na úrovni radiča predloží pred šablónu smerovania určenú na úrovni metódy akcie.

Možno budete často potrebovať spoločnú predponu pre váš radič. Ak tak urobíte, mali by ste použiť atribút [RoutePrefix], ako je uvedené v útržku kódu uvedenom nižšie.

[RoutePrefix („služby“)]

verejná trieda HomeController: Ovládač

{

// Metódy akcie

}

Použite smerovanie atribútov na úrovni metódy akcie v ASP.NET Core

Pozri triedu DefaultController uvedenú vyššie. Ako vidíte, v metóde Index triedy DefaultController sme určili tri trasy. To znamená, že každá z nasledujúcich adries URL vyvolá metódu akcie Index () nástroja DefaultController.

// localhost: 11277

// localhost: 11277 / home

// localhost: 11277 / home / index

Rovnako ako v prípade smerovania založeného na konvenciách, aj v smerovaní podľa atribútov môžete určiť parametre. Inými slovami, smerovanie podľa atribútov vám umožňuje určiť atribúty trasy s parametrami. Príkladom je metóda akcie GetRecordsById triedy DefaultController uvedená vyššie.

Upozorňujeme, že značka „{id}“ na zadanej trase predstavuje parameter alebo zástupný znak. Parameter id v tomto príklade môže byť čokoľvek, napríklad reťazec alebo celé číslo. Čo ak chcete obmedziť parameter iba na celé čísla? Môžete to dosiahnuť použitím obmedzení.

V metóde akcie použite obmedzenia trasy atribútov

Obmedzenia trasy sa používajú na zmarenie neplatných požiadaviek na akcie radiča. Napríklad budete chcieť zaistiť, aby parameter odovzdaný metóde akcie bol vždy celé číslo. Syntax použitia obmedzení trasy je {parameter: constraint}. Ilustruje to nasledujúci úryvok kódu. Upozorňujeme, že parameter id je tu vždy celé číslo.

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

public ActionResult GetRecordsById (int id)

{

string str = string.Format ("ID zadané ako parameter je: {0}", id);

návrat Ok (str);

}

V špecifikáciách trasy atribútov použite voliteľné parametre

Vo svojej špecifikácii trasy môžete použiť aj voliteľné parametre. Nasledujúci úryvok kódu ukazuje, ako je to možné dosiahnuť. Upozorňujeme, že metóda akcie by sa v tomto prípade vykonala, aj keď parameter id nebude odovzdaný.

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

Je dôležité si uvedomiť, že pri použití smerovania atribútov nehrá pri výbere, ktorá metóda akcie bude vykonaná, ani názov radiča, ani názov metódy akcie. Pozrime sa na príklad. Nasledujúci úryvok kódu ilustruje, ako sa zmenila adresa URL v špecifikácii trasy pre metódu akcie GetRecordsById.

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

public ActionResult GetRecordsById (int id)

{

string str = string.Format ("ID zadané ako parameter je: {0}", id);

návrat Ok (str);

}

Teraz môžete vyvolať metódu akcie GetRecordsById pomocou nasledujúcej adresy URL:

// localhost: 11277 / home / GetRecordsById / 1

V metóde akcie použite viac obmedzení smerovania atribútov

Na parameter je možné použiť aj viac obmedzení. Nasledujúci úryvok kódu ilustruje, ako je to možné dosiahnuť. Upozorňujeme, že minimálna hodnota parametra id by mala byť 1, inak sa vráti chyba 404.

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

public ActionResult GetRecordsById (int id)

{

string str = string.Format ("ID zadané ako parameter je: {0}", id);

návrat Ok (str);

}

Použite slovesá HTTP v trasách atribútov v metóde akcie

Pri smerovaní atribútov môžete dokonca použiť slovesá HTTP. Nasledujúci úryvok kódu ukazuje, ako je to možné dosiahnuť.

[HttpGet]

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

public ActionResult GetRecordsById (int id)

{

string str = string.Format ("ID zadané ako parameter je: {0}", id);

návrat Ok (str);

}

Bežne používaný atribút obmedzenia trasy

Tu je zoznam najčastejšie používaných obmedzení smerovania v ASP.NET Core.

  • bool - používa sa na priradenie boolovskej hodnoty
  • datetime - používa sa na priradenie hodnoty DateTime
  • decimal - slúži na priradenie desatinnej hodnoty
  • double - používa sa na priradenie 64-bitovej hodnote s pohyblivou rádovou čiarkou
  • float - používa sa na priradenie 32-bitovej hodnoty s pohyblivou rádovou čiarkou
  • guid - používa sa na priradenie hodnoty GUID
  • int - používa sa na priradenie 32-bitovej celočíselnej hodnoty
  • long - používa sa na priradenie 64-bitovej celočíselnej hodnoty
  • max - slúži na priradenie celého čísla k maximálnej hodnote
  • min - používa sa na priradenie celého čísla k minimálnej hodnote
  • minlength - používa sa na priradenie reťazca k minimálnej dĺžke
  • regex - používa sa na priradenie regulárneho výrazu

Vytvorte vlastné obmedzenia trasy atribútov

Môžete tiež vytvoriť svoje vlastné obmedzenia trasy vytvorením triedy, ktorá rozširuje rozhranie IRouteConstraint a implementuje metódu Match, ako je uvedené v útržku kódu uvedenom nižšie.

verejná trieda CustomRouteConstraint: IRouteConstraint

    {

public bool Match (HttpContext httpContext, IRouter route,

reťazec routeKey,

Hodnoty RouteValueDictionary, RouteDirection routeDirection)

        {

hodiť nový NotImplementedException ();

        }

    }

Použite náhradu tokenu v trasách atribútov na úrovni radiča

Smerovanie atribútov v ASP.NET Core MVC poskytuje podporu pre ďalšiu zaujímavú funkciu s názvom nahradenie tokenu. Vo svojom ovládači môžete použiť tokeny [action], [area] a [controller] a tieto tokeny budú nahradené názvami akcií, oblastí a ovládačov. Nasledujúci úryvok kódu ilustruje, ako je to možné dosiahnuť.

[Route („[kontrolór] / [akcia]“)]

verejná trieda HomeController: Ovládač

{

súkromné ​​iba na čítanie ILogger _logger;

verejný HomeController (ILogger logger)

   {

_logger = logger;

   }

verejný index IActionResult ()

   {

návrat Zobraziť ();

   }

// Ostatné metódy akcie

}

Smerovanie atribútov v ASP.NET Core vám dáva väčšiu kontrolu a flexibilitu nad URI vo vašej webovej aplikácii. Aj keď je možné smerovanie založené na konvenciách nakonfigurovať na jednom mieste, ktoré sa dá následne použiť na všetky radiče vo vašej aplikácii, je ťažké podporiť určité vzory URI (napríklad verzie API) pri smerovaní založenom na konvenciách.

Použitím smerovania atribútov môžete oddeliť názvy radičov a akcií od šablóny trasy. Vo svojich aplikáciách ASP.NET Core môžete dokonca použiť kombináciu smerovania založeného na konvenciách a smerovania založeného na atribútoch.

Ako urobiť viac v ASP.NET Core:

  • Ako odovzdať parametre akčným metódam v ASP.NET Core MVC
  • Ako používať analyzátory API v ASP.NET Core
  • Ako používať tokeny dát trasy v ASP.NET Core
  • Ako používať spravovanie verzií API v ASP.NET Core
  • Ako používať objekty na prenos dát v ASP.NET Core 3.1
  • Ako spracovať chyby 404 v ASP.NET Core MVC
  • Ako používať vkladanie závislostí do filtrov akcií v ASP.NET Core 3.1
  • Ako používať vzor možností v ASP.NET Core
  • Ako používať smerovanie koncového bodu v ASP.NET Core 3.0 MVC
  • Ako exportovať údaje do programu Excel v ASP.NET Core 3.0
  • Ako používať LoggerMessage v ASP.NET Core 3.0
  • Ako posielať e-maily v ASP.NET Core
  • Ako prihlásiť údaje na server SQL Server v ASP.NET Core
  • Ako plánovať úlohy pomocou Quartz.NET v ASP.NET Core
  • Ako vrátiť dáta z webového rozhrania ASP.NET Core Web API
  • Ako formátovať údaje odpovedí v ASP.NET Core
  • Ako konzumovať webové rozhranie API ASP.NET Core pomocou nástroja RestSharp
  • Ako vykonávať asynchronné operácie pomocou nástroja Dapper
  • Ako používať príznaky funkcií v ASP.NET Core
  • Ako používať atribút FromServices v ASP.NET Core
  • Ako pracovať s cookies v ASP.NET Core
  • Ako pracovať so statickými súbormi v ASP.NET Core
  • Ako používať middleware na prepisovanie adries URL v ASP.NET Core
  • Ako implementovať obmedzenie rýchlosti v ASP.NET Core
  • Ako používať Azure Application Insights v ASP.NET Core
  • Používanie pokročilých funkcií NLog v ASP.NET Core
  • Ako spracovať chyby v webovom rozhraní API ASP.NET
  • Ako implementovať globálne spracovanie výnimiek v ASP.NET Core MVC
  • Ako spracovať nulové hodnoty v ASP.NET Core MVC
  • Pokročilé spravovanie verzií v webovom rozhraní API ASP.NET Core
  • Ako pracovať s pracovnými službami v ASP.NET Core
  • Ako používať rozhranie Data Protection API v ASP.NET Core
  • Ako používať podmienený middleware v ASP.NET Core
  • Ako pracovať so stavom relácie v ASP.NET Core
  • Ako písať efektívne radiče v ASP.NET Core
$config[zx-auto] not found$config[zx-overlay] not found