Programavimas

Kaip naudoti atributų nukreipimą ASP.NET Core

Maršrutizavimo tarpinė programinė įranga, esanti „ASP.NET Core“, moka atvaizduoti gaunamas užklausas atitinkamiems maršruto tvarkytojams. Maršrutą „ASP.NET Core“ galite nustatyti dviem skirtingais būdais: maršrutu, kurio pagrindas yra atributas, ir maršrutu.

Skirtingai nuo įprasto maršruto, kai maršruto informacija nurodoma vienoje vietoje, atributų nukreipimas leidžia įgyvendinti maršrutą, puošiant savo veiksmų metodus atributais. Šiame straipsnyje aptariama, kaip mes galime dirbti su atributais pagrįstu maršruto parinkimu ASP.NET Core MVC.

Norėdami dirbti su šiame straipsnyje pateiktais kodų pavyzdžiais, sistemoje turite būti įdiegę „Visual Studio 2019“. Jei dar neturite kopijos, galite atsisiųsti „Visual Studio 2019“ čia.

Sukurkite ASP.NET Core 3.1 MVC projektą „Visual Studio 2019“

Pirmiausia sukurkime „ASP.NET Core“ projektą „Visual Studio 2019“. Darant prielaidą, kad „Visual Studio 2019“ yra įdiegta jūsų sistemoje, atlikite toliau nurodytus veiksmus, kad sukurtumėte naują „ASP.NET Core“ projektą „Visual Studio“.

  1. Paleiskite „Visual Studio IDE“.
  2. Spustelėkite „Sukurti naują projektą“.
  3. Lange „Kurti naują projektą“ iš rodomų šablonų sąrašo pasirinkite „ASP.NET Core Web Application“.
  4. Spustelėkite Pirmyn.
  5. Lange „Konfigūruoti naują projektą“ nurodykite naujo projekto pavadinimą ir vietą.
  6. Pasirinktinai pažymėkite žymės langelį „Įdėti sprendimą ir projektą tame pačiame kataloge“, atsižvelgiant į jūsų pageidavimus.
  7. Spustelėkite Sukurti.
  8. Kitame rodomame lange „Sukurti naują ASP.NET Core žiniatinklio programą“ viršuje esančiame išskleidžiamajame sąraše pasirinkite .NET Core kaip vykdymo laiką ir ASP.NET Core 3.1 (ar naujesnę).
  9. Norėdami sukurti naują ASP.NET Core MVC programą, kaip projekto šabloną pasirinkite „Web Application (Model-View-Controller)“.
  10. Įsitikinkite, kad nepažymėti žymės langeliai „Įgalinti„ Docker “palaikymą“ ir „Konfigūruoti HTTPS“, nes čia nenaudosime tų funkcijų.
  11. Įsitikinkite, kad autentifikavimas nustatytas kaip „Nėra autentifikavimo“, nes mes taip pat nenaudosime autentifikavimo.
  12. Spustelėkite Sukurti.

Atlikę šiuos veiksmus, „Visual Studio 2019“ sukursite naują ASP.NET Core MVC projektą. Šį projektą naudosime toliau pateiktose skiltyse, kad parodytume, kaip galime dirbti su atributų nukreipimu ASP.NET Core 3.1.

Sukurkite valdiklio klasę ASP.NET Core MVC

Sukurkite naują valdiklį pavadinimu „DefaultController“ ir pakeiskite numatytąjį „DefaultController“ šaltinio kodą šiuo kodu:

  public class DefaultController: valdiklis

    {

[Maršrutas ("")]

[Maršrutas („numatytasis“)]

[Maršrutas („Numatytasis / rodyklė“)]

viešasis „ActionResult Index“ ()

        {

grąžinti naują „EmptyResult“ ();

        }

[Maršrutas („Default / GetRecordsById / {id}“)]

public ActionResult GetRecordsById (int id)

        {

eilutė str = eilutė. Formatas

("ID, perduotas kaip parametras, yra: {0}", id);

grįžti Ok (str);

        }

    }

Atributų nukreipimą valdiklio lygiu naudokite ASP.NET Core

Atributų nukreipimas gali būti naudojamas tiek valdiklio, tiek veiksmų metodo lygiu. Jei maršruto atributą taikysime valdiklio lygiu, maršrutas bus taikomas visiems to valdiklio veiksmų metodams.

Išnagrinėję mūsų „DefaultController“ klasę, pastebėsite, kad numatytasis maršrutas naudojamas kelis kartus nurodant maršruto šabloną veiksmų metodams. Šis kodo fragmentas parodo, kaip valdiklio lygiu galite nurodyti skirtingus maršruto atributus, kad lanksčiau naudotumėte atributų nukreipimą.

[Maršrutas („numatytasis“)]

public class DefaultController: valdiklis

{

[Maršrutas ("")]

[Maršrutas („Rodyklė“)]

viešas „ActionResult Index“ ()

  {

grąžinti naują „EmptyResult“ ();

   }

[HttpGet]

Maršrutas ("Default / GetRecordsById / {id}")]

public ActionResult GetRecordsById (int id)

  {

eilutė str = string.Format ("ID, perduotas kaip parametras, yra: {0}", id);

grįžti Ok (str);

   }

}

Naudojant maršruto atributus valdiklio ir veiksmo metodo lygmenyse, valdiklio lygiu pritaikytas maršruto šablonas pridedamas prie maršruto šablono, nurodyto veiksmo metodo lygiu.

Jums dažnai gali prireikti bendro valdiklio priešdėlio. Kai tai padarysite, turėtumėte naudoti atributą [RoutePrefix], kaip parodyta toliau pateiktame kodo fragmente.

[„RoutePrefix“ („paslaugos“)]

viešosios klasės „HomeController“: valdiklis

{

// Veiksmo metodai

}

Naudokite atributų nukreipimą veiksmų metodo lygiu sistemoje ASP.NET Core

Žr. Aukščiau nurodytą „DefaultController“ klasę. Kaip matote, „DefaultController“ klasės „Index“ metode nurodėme tris maršrutus. Tai reiškia, kad kiekvienas iš šių URL iškvies „DefaultController“ veiksmų metodą „Index“).

// vietinis šeimininkas: 11277

// localhost: 11277 / home

// localhost: 11277 / home / index

Kaip ir pagal maršrutą, parametrus galite nurodyti ir pagal atributus pagrįstame maršrute. Kitaip tariant, maršrutas pagal atributus leidžia nurodyti maršruto atributus su parametrais. Anksčiau parodytas „DefaultController“ klasės „GetRecordsById“ metodas yra pavyzdys.

Atminkite, kad „{id}“ nurodytame maršrute reiškia parametrą arba vietos savininką. Šiame pavyzdyje ID parametras gali būti bet koks, pvz., Eilutė arba sveikasis skaičius. Ką daryti, jei norite apriboti parametrą tik sveikaisiais skaičiais? Tai galite pasiekti naudodamiesi apribojimais.

Veiksmo metode naudokite atributo maršruto apribojimus

Maršruto apribojimai naudojami siekiant užkirsti kelią neteisingoms užklausoms valdiklio veiksmams. Pvz., Galbūt norėsite užtikrinti, kad veiksmo metodui perduotas parametras visada būtų sveikasis skaičius. Maršruto apribojimų naudojimo sintaksė yra {parametras: apribojimas}. Tai iliustruoja šis kodo fragmentas. Atminkite, kad parametras id visada yra sveikasis skaičius.

[Maršrutas („Default / GetRecordsById / {id: int}“)]

public ActionResult GetRecordsById (int id)

{

eilutė str = string.Format ("ID, perduotas kaip parametras, yra: {0}", id);

grįžti Ok (str);

}

Atributo maršruto specifikacijose naudokite pasirinktinius parametrus

Maršruto specifikacijose taip pat galite naudoti pasirinktinius parametrus. Šis kodo fragmentas parodo, kaip tai galima pasiekti. Atminkite, kad veiksmų metodas šiuo atveju būtų vykdomas, net jei neperduotas parametras id.

[Maršrutas („Pardavimai /„ GetSalesByRegionId “/ {id?}“)]

Svarbu suprasti, kad naudojant atributų nukreipimą nei valdiklio, nei veiksmo metodo pavadinimas neturi jokio vaidmens renkantis, kuris veiksmo metodas bus vykdomas. Pažiūrėkime tai su pavyzdžiu. Šis kodo fragmentas iliustruoja, kaip buvo pakeistas URL metodo „GetRecordsById“ maršruto specifikacijoje.

[Maršrutas („Pagrindinis / GetRecordsById / {id: int}“)]

public ActionResult GetRecordsById (int id)

{

eilutė str = string.Format ("ID, perduotas kaip parametras, yra: {0}", id);

grįžti Ok (str);

}

Dabar galite iškviesti „GetRecordsById“ veiksmo metodą naudodami šį URL:

// localhost: 11277 / home / GetRecordsById / 1

Veiksmo metode naudokite kelis atributo maršruto apribojimus

Parametrui taip pat galima taikyti kelis apribojimus. Šis kodo fragmentas parodo, kaip tai galima pasiekti. Atkreipkite dėmesį, kad minimali ID parametro vertė turėtų būti 1, kitaip bus pateikta 404 klaida.

[Maršrutas („Default / GetRecordsById / {id: int: min (1)}“]]

public ActionResult GetRecordsById (int id)

{

eilutė str = string.Format ("ID, perduotas kaip parametras, yra: {0}", id);

grįžti Ok (str);

}

Veiksmo metodo atributų keliuose naudokite HTTP veiksmažodžius

Atributų maršrute galite naudoti net HTTP veiksmažodžius. Šis kodo fragmentas parodo, kaip tai galima pasiekti.

[HttpGet]

[Maršrutas ("Default / GetRecordsById / {id: int: min (1)}"]]

public ActionResult GetRecordsById (int id)

{

eilutė str = string.Format ("ID, perduotas kaip parametras, yra: {0}", id);

grįžti Ok (str);

}

Dažniausiai naudojami atributo maršruto apribojimai

Čia pateikiamas dažniausiai naudojamų maršruto apribojimų, esančių ASP.NET Core, sąrašas.

  • „Bool“ - naudojamas norint atitikti Bulio reikšmę
  • datetime - naudojamas norint suderinti DateTime vertę
  • dešimtainis - naudojamas atitikti dešimtainę vertę
  • dvigubas - naudojamas 64 bitų slankiojo kablelio vertei suderinti
  • plūduriuojantis - naudojamas norint suderinti 32 bitų slankiojo kablelio vertę
  • guid - naudojamas GUID reikšmei suderinti
  • int - naudojamas 32 bitų sveikojo skaičiaus reikšmei suderinti
  • ilgas - naudojamas 64 bitų sveikojo skaičiaus reikšmei suderinti
  • max - naudojamas sveikam skaičiui suderinti su didžiausia verte
  • min - naudojamas sveikam skaičiui suderinti su minimalia verte
  • minlength - naudojama norint suderinti minimalaus ilgio eilutę
  • regex - naudojamas atitikti taisyklingą išraišką

Sukurkite pasirinktinio atributo maršruto apribojimus

Taip pat galite sukurti savo pasirinktinius maršruto apribojimus, sukurdami klasę, kuri pratęsia „IRouteConstraint“ sąsają ir įgyvendina „Match“ metodą, kaip parodyta toliau pateiktame kodo fragmente.

viešoji klasė „CustomRouteConstraint“: „IRouteConstraint“

    {

viešoji „Bool Match“ („HttpContext httpContext“, „IRouter“ maršrutas,

eilutės maršrutasKey,

RouteValueDictionary reikšmės, RouteDirection routeDirection)

        {

mesti naują NotImplementedException ();

        }

    }

Atributų maršrutuose valdiklio lygiu naudokite žetonų pakeitimą

ASP.NET Core MVC atributų nukreipimas palaiko dar vieną įdomią funkciją, pavadintą žetonų pakeitimu. Savo valdiklyje galite naudoti žetonus [veiksmas], [sritis] ir [valdiklis], o šie žetonai bus atitinkamai pakeisti veiksmo, srities ir valdiklio pavadinimais. Šis kodo fragmentas parodo, kaip tai galima pasiekti.

[Maršrutas („[valdiklis] / [veiksmas]“]]]

viešosios klasės „HomeController“: valdiklis

{

privatus tik skaitomas ILogger _logger;

viešasis „HomeController“ („ILogger logger“)

   {

_logger = logger;

   }

public IActionResult Index ()

   {

grįžti View ();

   }

// Kiti veiksmo metodai

}

ASP.NET Core atributų nukreipimas suteikia daugiau galimybių kontroliuoti ir lanksčiau valdyti žiniatinklio programos URI. Nors pagal maršrutą maršrutą galima sukonfigūruoti vienoje vietoje, o tai savo ruožtu gali būti pritaikyta visiems jūsų programos valdikliams, sunku palaikyti tam tikrus URI modelius (pvz., API versijas) taikant maršrutą.

Naudodami atributų nukreipimą, galite atsieti valdiklio ir veiksmų pavadinimus nuo maršruto šablono. Savo ASP.NET Core programose netgi galite naudoti derinį pagal maršrutą ir atributais pagrįstą maršrutą.

Kaip padaryti daugiau naudojant „ASP.NET Core“:

  • Kaip perduoti parametrus veiksmų metodams ASP.NET Core MVC
  • Kaip naudoti API analizatorius ASP.NET Core
  • Kaip naudoti maršruto duomenų žetonus ASP.NET Core
  • Kaip naudoti API versijas „ASP.NET Core“
  • Kaip naudoti duomenų perdavimo objektus ASP.NET Core 3.1
  • Kaip tvarkyti 404 klaidas ASP.NET Core MVC
  • Kaip naudoti priklausomybės įpurškimą veiksmo filtruose ASP.NET Core 3.1
  • Kaip naudoti ASP.NET Core parinkčių modelį
  • Kaip naudoti galinių taškų nukreipimą ASP.NET Core 3.0 MVC
  • Kaip eksportuoti duomenis į „Excel“ naudojant ASP.NET Core 3.0
  • Kaip naudoti „LoggerMessage“ ASP.NET Core 3.0
  • Kaip siųsti el. Laiškus naudojant ASP.NET Core
  • Kaip registruoti duomenis į „SQL Server“ naudojant ASP.NET Core
  • Kaip suplanuoti darbus naudojant „Quartz.NET“ ASP.NET Core
  • Kaip grąžinti duomenis iš ASP.NET Core Web API
  • Kaip formatuoti atsakymo duomenis ASP.NET Core
  • Kaip suvartoti ASP.NET Core Web API naudojant „RestSharp“
  • Kaip atlikti asinchronines operacijas naudojant „Dapper“
  • Kaip naudoti funkcijų žymes „ASP.NET Core“
  • Kaip naudoti „FromServices“ atributą „ASP.NET Core“
  • Kaip dirbti su slapukais ASP.NET Core
  • Kaip dirbti su statiniais failais sistemoje ASP.NET Core
  • Kaip naudoti URL perrašymo tarpinę programinę įrangą ASP.NET Core
  • Kaip įdiegti normos ribojimą ASP.NET Core
  • Kaip naudoti „Azure Application Insights“ ASP.NET Core
  • Išplėstinių „NLog“ funkcijų naudojimas „ASP.NET Core“
  • Kaip tvarkyti klaidas ASP.NET žiniatinklio API
  • Kaip įdiegti visuotinį išimčių tvarkymą ASP.NET Core MVC
  • Kaip tvarkyti nulines reikšmes ASP.NET Core MVC
  • Išplėstinė ASP.NET „Core Web API“ versijų versija
  • Kaip dirbti su darbuotojų paslaugomis ASP.NET Core
  • Kaip naudoti duomenų apsaugos API ASP.NET Core
  • Kaip naudoti sąlyginę tarpinę programinę įrangą ASP.NET Core
  • Kaip dirbti su seanso būsena ASP.NET Core
  • Kaip rašyti efektyvius valdiklius ASP.NET Core
$config[zx-auto] not found$config[zx-overlay] not found