Ohjelmointi

Attribuuttien reitityksen käyttäminen ASP.NET Core -sovelluksessa

ASP.NET Core -sovelluksen reititysväliohjelmisto osaa kartoittaa saapuvat pyynnöt vastaaville reitin käsittelijöille. Voit määrittää reitityksen ASP.NET Core -sovellukseen kahdella eri tavalla: attribuuttipohjainen reititys ja käytäntöpohjainen reititys.

Toisin kuin käytäntöpohjainen reititys, jossa reititystiedot määritetään yhdessä paikassa, attribuuttien reititys antaa sinulle mahdollisuuden toteuttaa reititys koristamalla toimintatapasi attribuuteilla. Tämä artikkeli esittelee keskustelun siitä, miten voimme toimia määritepohjaisen reitityksen kanssa ASP.NET Core MVC: ssä.

Jotta voit työskennellä tässä artikkelissa annettujen koodiesimerkkien kanssa, järjestelmässäsi on oltava asennettuna Visual Studio 2019. Jos sinulla ei vielä ole kopiota, voit ladata Visual Studio 2019 täältä.

Luo ASP.NET Core 3.1 MVC -projekti Visual Studio 2019: ssä

Ensinnäkin, luodaan ASP.NET-ydinprojekti Visual Studio 2019: ssä. Olettaen, että Visual Studio 2019 on asennettu järjestelmään, luo uusi ASP.NET Core -projekti Visual Studiossa noudattamalla alla olevia ohjeita.

  1. Käynnistä Visual Studio IDE.
  2. Napsauta Luo uusi projekti.
  3. Valitse Luo uusi projekti -ikkunassa ”ASP.NET Core Web Application” näytetystä malliluettelosta.
  4. Napsauta Seuraava.
  5. Määritä uuden projektin määritys -ikkunassa uuden projektin nimi ja sijainti.
  6. Valitse vaihtoehtoisesti Sijoita ratkaisu ja projekti samaan hakemistoon -valintaruutu mieltymystesi mukaan.
  7. Napsauta Luo.
  8. Valitse seuraavassa näkyvässä "Luo uusi ASP.NET-ydinverkkosovellus" -ikkunassa .NET Core ajonaikaisena ja ASP.NET Core 3.1 (tai uudempi) yläreunan avattavasta luettelosta.
  9. Luo uusi ASP.NET Core MVC -sovellus valitsemalla projektisivuksi ”Web-sovellus (Model-View-Controller)”.
  10. Varmista, että valintaruudut Ota Docker-tuki käyttöön ja Määritä HTTPS: lle ei ole valittu, koska emme käytä näitä ominaisuuksia täällä.
  11. Varmista, että todennuksen asetuksena on Ei todentamista, koska emme myöskään käytä todennusta.
  12. Napsauta Luo.

Näiden vaiheiden seuraamalla luodaan uusi ASP.NET Core MVC -projekti Visual Studio 2019: ssä. Käytämme tätä projektia alla olevissa osioissa havainnollistaaksemme, kuinka voimme toimia attribuuttien reitityksen kanssa ASP.NET Core 3.1: ssä.

Luo ohjainluokka ASP.NET Core MVC: hen

Luo uusi ohjain nimeltä DefaultController ja korvaa DefaultControllerin oletuslähdekoodi seuraavalla koodilla:

  public class DefaultController: Ohjain

    {

[Reitti("")]

[Reitti ("Oletus")]

[Reitti ("Oletus / Hakemisto")]

julkinen ActionResult Index ()

        {

palauta uusi EmptyResult ();

        }

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

public ActionResult GetRecordsById (int id)

        {

merkkijono str = merkkijono

("Parametrina lähetetty tunnus on: {0}", id);

palaa Ok (str);

        }

    }

Käytä määritteen reititystä ohjaimen tasolla ASP.NET Core -sovelluksessa

Attribuuttien reititystä voidaan käyttää sekä ohjaimen että toimintamenetelmien tasolla. Jos käytämme reitti-attribuuttia ohjaimen tasolla, reitti soveltuu kaikkiin kyseisen ohjaimen toimintamenetelmiin.

Jos tarkastelet DefaultController-luokkaa, huomaat, että oletusreittiä käytetään useita kertoja määritettäessä reittimallia toimintatavoille. Seuraava koodinpätkä osoittaa, kuinka voit määrittää erilaisia ​​reitin määritteitä ohjaimen tasolla, jotta attribuuttien reititystä voidaan käyttää joustavammin.

[Reitti ("Oletus")]

public class DefaultController: Ohjain

{

[Reitti("")]

[Reitti ("Hakemisto")]

julkinen ActionResult-indeksi ()

  {

palauta uusi EmptyResult ();

   }

[HttpGet]

Reitti ("Default / GetRecordsById / {id}")]

public ActionResult GetRecordsById (int id)

  {

merkkijono str = string.Format ("Parametrina lähetetty tunnus on: {0}", id);

palaa Ok (str);

   }

}

Kun käytetään reittimääritteitä sekä ohjaimen että toimintamenetelmän tasoilla, ohjaimen tasolla käytetty reittimalli valmiiksi lisätty toimintamenetelmätasolla määritettyyn reittimalliin.

Saatat tarvita usein yhteistä etuliitettä ohjaimellesi. Kun teet niin, sinun on käytettävä [RoutePrefix] -attribuuttia alla olevan koodinpätkän mukaisesti.

[RoutePrefix ("palvelut")]

julkisen luokan HomeController: Controller

{

// Toimintamenetelmät

}

Käytä määritteen reititystä toimintamenetelmätasolla ASP.NET Core -sovelluksessa

Katso yllä esitetty DefaultController-luokka. Kuten näette, olemme määrittäneet kolme reittiä DefaultController-luokan hakemistomenetelmässä. Tämä tarkoittaa, että kukin seuraavista URL-osoitteista käyttää DefaultControllerin Index () -menetelmää.

// paikallinen isäntä: 11277

// paikallinen isäntä: 11277 / home

// paikallinen isäntä: 11277 / home / index

Kuten käytäntöpohjaisessa reitityksessä, voit määrittää parametrit myös attribuuttipohjaisessa reitityksessä. Toisin sanoen määritepohjaisen reitityksen avulla voit määrittää reitin määritteet parametreilla. Aiemmin esitetty DefaultController-luokan GetRecordsById-toimintamenetelmä on esimerkki.

Huomaa, että "{id}" määritetyllä reitillä edustaa parametria tai paikkamerkintää. Tässä esimerkissä id-parametri voi olla mikä tahansa, kuten merkkijono tai kokonaisluku. Entä jos haluat rajoittaa parametrin vain kokonaislukuihin? Voit saavuttaa tämän käyttämällä rajoituksia.

Käytä toimintamenetelmässä määritteen reittirajoituksia

Reittirajoituksia käytetään estämään virheelliset pyynnöt ohjaimen toiminnoille. Voit esimerkiksi varmistaa, että toimintomenetelmälle välitetty parametri on aina kokonaisluku. Reittirajoitusten syntaksi on {parametri: rajoitus}. Seuraava koodinpätkä kuvaa tätä. Huomaa, että id-parametri on aina kokonaisluku.

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

public ActionResult GetRecordsById (int id)

{

merkkijono str = string.Format ("Parametrina lähetetty tunnus on: {0}", id);

palaa Ok (str);

}

Käytä valinnaisia ​​parametreja määritteen reittimäärityksissä

Voit käyttää valinnaisia ​​parametreja myös reittimäärityksissäsi. Seuraava koodinpätkä osoittaa, miten tämä voidaan saavuttaa. Huomaa, että toimintamenetelmä suoritetaan tässä tapauksessa, vaikka id-parametria ei välitettäisi.

[Reitti ("Myynti / GetSalesByRegionId / {id?}")]

On tärkeää ymmärtää, että määritteen reititystä käytettäessä ohjaimen nimellä tai toimintomenetelmän nimellä ei ole mitään merkitystä suoritettavan toimintamenetelmän valinnassa. Katsotaanpa tämä esimerkin avulla. Seuraava koodinpätkä kuvaa, miten URL-osoitetta on muutettu GetRecordsById-toimintomenetelmän reittimäärityksessä.

[Reitti ("Etusivu / GetRecordsById / {id: int}")]

public ActionResult GetRecordsById (int id)

{

merkkijono str = string.Format ("Parametrina lähetetty tunnus on: {0}", id);

palaa Ok (str);

}

Voit nyt käyttää GetRecordsById-toimintomenetelmää seuraavalla URL-osoitteella:

// paikallinen isäntä: 11277 / home / GetRecordsById / 1

Käytä toimintamenetelmässä useita määritteen reittirajoituksia

Parametriin on myös mahdollista soveltaa useita rajoituksia. Seuraava koodinpätkä kuvaa, miten tämä voidaan saavuttaa. Huomaa, että id-parametrin vähimmäisarvon tulisi olla 1, muuten palautetaan 404-virhe.

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

public ActionResult GetRecordsById (int id)

{

merkkijono str = string.Format ("Parametrina lähetetty tunnus on: {0}", id);

palaa Ok (str);

}

Käytä HTTP-verbejä attribuuttireiteillä toimintamenetelmässä

Voit myös käyttää HTTP-verbejä attribuuttien reitityksessä. Seuraava koodinpätkä osoittaa, miten tämä voidaan saavuttaa.

[HttpGet]

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

public ActionResult GetRecordsById (int id)

{

merkkijono str = string.Format ("Parametrina lähetetty tunnus on: {0}", id);

palaa Ok (str);

}

Yleisesti käytetyt määritteen reittirajoitukset

Tässä on luettelo ASP.NET Core -sovelluksen yleisimmin käytetyistä reittirajoituksista.

  • bool - käytetään vastaamaan loogista arvoa
  • päivämäärä - käytetään vastaamaan DateTime-arvoa
  • desimaali - käytetään vastaamaan desimaaliarvoa
  • double - käytetään vastaamaan 64-bittistä liukulukuarvoa
  • float - käytetään vastaamaan 32-bittistä liukulukuarvoa
  • guid - käytetään vastaamaan GUID-arvoa
  • int - käytetään vastaamaan 32-bittistä kokonaislukua
  • pitkä - käytetään vastaamaan 64-bittistä kokonaislukua
  • max - käytetään vastaamaan kokonaislukua maksimiarvoon
  • min - käytetään vastaamaan kokonaislukua minimiarvoon
  • minlength - käytetään vastaamaan merkkijonoa, jonka pituus on pienin
  • regex - käytetään vastaamaan säännöllistä lauseketta

Luo mukautettujen määritteiden reittirajoitukset

Voit myös luoda omia mukautettuja reittirajoituksia luomalla luokan, joka laajentaa IRouteConstraint-käyttöliittymää ja toteuttaa Match-menetelmän alla olevan koodikatkelman mukaisesti.

public class CustomRouteConstraint: IRouteConstraint

    {

public bool Match (HttpContext httpContext, IRouter-reitti,

merkkijono routeKey,

RouteValueDictionary-arvot, RouteDirection routeDirection)

        {

heittää uusi NotImplementedException ();

        }

    }

Käytä tunnuksen korvaamista määritteen reiteillä ohjaimen tasolla

Attribuuttien reititys ASP.NET Core MVC: ssä tarjoaa tuen toiselle mielenkiintoiselle ominaisuudelle nimeltä nimimerkkien vaihto. Voit käyttää ohjaimessa merkkejä [action], [area] ja [controller], ja nämä tunnukset korvataan vastaavasti toiminnan, alueen ja ohjaimen nimillä. Seuraava koodinpätkä kuvaa, miten tämä voidaan saavuttaa.

[Reitti ("[ohjain] / [toiminta]")]

julkisen luokan HomeController: Controller

{

yksityinen vain luku ILogger _logger;

julkinen HomeController (ILogger logger)

   {

_logger = kirjaaja;

   }

julkinen IActionResult-indeksi ()

   {

palaa Näytä ();

   }

// Muut toimintamenetelmät

}

ASP.NET Core -sovelluksen attribuuttien reititys antaa sinulle enemmän hallintaa ja joustavuutta verkkosovelluksesi URI-tunnisteisiin. Vaikka yleissopimuspohjainen reititys voidaan määrittää yhdestä sijainnista, jota voidaan puolestaan ​​soveltaa kaikkiin sovelluksen ohjaimiin, on vaikea tukea tiettyjä URI-malleja (kuten API-versioita) käytäntöihin perustuvalla reitityksellä.

Käyttämällä määritteen reititystä voit erottaa ohjaimen ja toiminnan nimet reittimallista. Voit jopa käyttää perinteisen reitityksen ja määritepohjaisen reitityksen yhdistelmää ASP.NET Core -sovelluksissa.

Kuinka tehdä enemmän ASP.NET Core -sovelluksessa:

  • Parametrien siirtäminen toimintamenetelmiin ASP.NET Core MVC: ssä
  • Kuinka käyttää API-analysaattoreita ASP.NET Core -sovelluksessa
  • Kuinka käyttää reittitunnuksia ASP.NET Core -sovelluksessa
  • Kuinka käyttää API-versiota ASP.NET Core -sovelluksessa
  • Kuinka käyttää tiedonsiirtoobjekteja ASP.NET Core 3.1: ssä
  • Kuinka käsitellä 404 virhettä ASP.NET Core MVC: ssä
  • Riippuvuusinjektion käyttäminen ASP.NET Core 3.1 -suodattimissa
  • Asetuskuvion käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka käyttää päätepisteiden reititystä ASP.NET Core 3.0 MVC: ssä
  • Tietojen vieminen Exceliin ASP.NET Core 3.0: ssa
  • LoggerMessagen käyttäminen ASP.NET Core 3.0: ssa
  • Kuinka lähettää sähköposteja ASP.NET Core -sovelluksessa
  • Tietojen kirjaaminen SQL Server -palvelimeen ASP.NET Core -sovelluksessa
  • Työn ajoitus Quartz.NET: n avulla ASP.NET Core -sovelluksessa
  • Tietojen palauttaminen ASP.NET Core Web -sovellusliittymästä
  • Kuinka muotoilla vastaustiedot ASP.NET Core -sovelluksessa
  • ASP.NET Core Web -sovellusliittymän kuluttaminen RestSharpin avulla
  • Asynkronointitoimintojen suorittaminen Dapperin avulla
  • Ominaisuuslippujen käyttäminen ASP.NET Core -sovelluksessa
  • FromServices-määritteen käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka toimia evästeiden kanssa ASP.NET Core -sovelluksessa
  • Staattisten tiedostojen käsittely ASP.NET Core -sovelluksessa
  • URL: n uudelleenkirjoittamisen väliohjelmiston käyttäminen ASP.NET Core -sovelluksessa
  • Nopeudenrajoituksen toteuttaminen ASP.NET Core -sovelluksessa
  • Kuinka käyttää Azure Application Insightsia ASP.NET Core -sovelluksessa
  • NLog-lisäominaisuuksien käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka käsitellä virheitä ASP.NET Web API: ssa
  • Kuinka toteuttaa maailmanlaajuinen poikkeusten käsittely ASP.NET Core MVC: ssä
  • Kuinka käsitellä nolla-arvoja ASP.NET Core MVC: ssä
  • Edistynyt versiointi ASP.NET Core Web -sovellusliittymässä
  • Kuinka työskennellä työntekijöiden palveluiden kanssa ASP.NET Core -sovelluksessa
  • Tietosuoja-sovellusliittymän käyttö ASP.NET Core -sovelluksessa
  • Ehdollisen väliohjelmiston käyttäminen ASP.NET Core -sovelluksessa
  • Istunnon tilan käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka kirjoittaa tehokkaita ohjaimia ASP.NET Core -sovellukseen
$config[zx-auto] not found$config[zx-overlay] not found