Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 16017|Vastaus: 1

[.NET Core] ASP.NET Mukautettujen reititysrajoitusten toteutus Coressa

[Kopioi linkki]
Julkaistu 6.5.2019 9.30.30 | | |
Reititysrajoitteet

ASP.NET Corea voit välittää muuttujia URL-osoitteissa määrittämällä reititysmalleja, ja voit tarjota oletuksia, valinnaisia ja rajoituksia muuttujille.

Rajoitetta käytetään lisäämällä määritelty rajoitteen nimi attribuuttireittiin, jota käytetään seuraavasti:

Jotkin rajoitteet on jo esitetty kehyksen sisällä, kuten seuraavat:

Rajoitteet
esimerkki
Esimerkkejä otteluista
havainnollistaa
int
{id:int}
123456789, -123456789
Täsmää mikä tahansa kokonaisluku
bool
{active:bool}
totta, VÄÄRÄ
Täsmäys tosi tai epätosi (kirjainkoon herkkä)
Päivämääräaika
{dob:datetime}
2016-12-31, 2016-12-31 19:32
Vastaa kelvollisia DateTime-arvoja (kiinteässä paikassa – katso varoitus)
desimaali
{price:decimal}
49.99, -1,000.01
Vastaa kelvollisia desimaaliarvoja (kiinteässä lokaliteetissa – katso varoitus)
tupla
{weight:double}
1.234, -1,001.01e8
Vastaa kelvollisia kaksoisarvoja (kiinteässä paikallisuudessa – katso varoitus)
Float
{weight:float}
1.234, -1,001.01e8
Täsmää kelvolliset kelluntaarvot (kiinteässä paikallisuudessa – katso varoitukset)
Guid
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Osuu päteviin GUID-arvoihin
pitkä
{tikittää:pitkä}
123456789, -123456789
Yhteensopivat pitkien arvojen kohdalla
minlength(arvo)
{käyttäjänimi:minlength(4)}
Rick
Merkkijonon tulee olla vähintään 4 merkkiä
maxlength(arvo)
{tiedostonimi:maxlength(8)}
Richard
Merkkijonojen pituus ei saa ylittää 8 merkkiä
pituus(pituus)
{tiedostonimi:pituus(12)}
somefile.txt
Merkkijonon täytyy olla täsmälleen 12 merkkiä
pituus(min,maksimi)
{tiedostonimi:pituus(8,16)}
somefile.txt
Merkkijonon tulee olla vähintään 8 merkkiä ja enintään 16 merkkiä
min(arvo)
{age:min(18)}
19
Kokonaislukuarvon on oltava vähintään 18
max(value)
{age:max(120)}
91
Kokonaislukuarvon ei saa ylittää 120
Etäisyys (min, maksimi)
{age:range(18,120)}
91
Kokonaislukuarvon tulee olla vähintään 18 eikä ylittää 120
alfa
{name:alpha}
Rick
Merkkijonon on koostuttava yhdestä tai useammasta aakkosmerkistä (a-z, kirjainkoja herkkä).
regex (lauseke)
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
Merkkijonon on vastattava säännöllistä lauseketta (katso vinkit säännöllisten lausekkeiden määrittelyyn)
pakollinen
{nimi:vaaditaan}
Rick
Käytetään valvomaan ei-parametristen arvojen läsnäoloa URL-osoitteiden generoinnin aikana


Sisäänrakennetut rajoitteet toimivat useimmissa yleisissä käyttötapauksissa, mutta joskus meidän täytyy silti räätälöidä haluamamme efekti.
Mukautetut reititysrajoitteet

Mukautettu rajoite on toteuttaa IRouteConstraint-rajapinta ja ylikuormittaa Match-metodi, jossa on neljä parametria.

Ensimmäinen parametri, httpContext, on nykyisen pyynnön konteksti

Toinen parametri, reitti, on reitti, johon nykyinen rajoite kuuluu

Kolmas parametri, routeKey, on tällä hetkellä tarkistetun muuttujan nimi, kuten id esimerkissä artikkelin alussa
Neljäs parametriarvo on sanakirjan arvo, johon nykyinen URL vastaa, kuten esimerkin reitti artikkelin alussa; jos URL on users/1, on olemassa sanakirja, jonka avain = id , value = 1. Tietenkin on myös arvoja muille muuttujille, kuten ohjaimelle, toiminnolle jne.

Viides parametri, routeDirection, on lueteltu arvo, joka kuvaa, pyydetäänkö URL verkossa vai generoidaanko se esimerkiksi Url.Actionilla.

Esimerkiksi haluamme määritellä rajoitteen, joka määrittelee, että reitin kautta kulkevien parametrien on oltava määritelty luetteloarvo.

Määritellään ensin enum:


Määritellään sitten rajoitteet:

Lisää mukautetut rajoitteet ConfigureServices-metodiin Startup.cs:
Reittirajoitusten käyttö:

(WebApplicationTest on nykyinen nimiavaruus)


{id:int:min(2)} -reitillä on käytettävä min(2), muuten id = 0 tai id = 1 välillä syntyy ristiriita.

Aja ohjelma ja sovita omat rajoitteemme, kun reitit ovat api/test/0, api/test/1, api/test/true ja api/test/false.

Jos reitti on api/testi/{kokonaisluku, joka on suurempi kuin 2}, sovita toinen reitti.

Muut tapaukset vastaavat kolmatta reittiä.

johtopäätös

Reititysrajoitteet ovat joissain tilanteissa erittäin hyödyllinen ominaisuus, sillä ne voivat pienentää tarkistusparametreja ohjaimessa, ja osittaisen parametrien validoinnin funktio voidaan toteuttaa deklaratiivisella attruibutella, ja joitakin kaksoistarkistuksia voidaan poimia rajoitteiksi julkista käyttöä varten.

Rajoitteen konstruktori voidaan injektoida, joten se on hyvin laajennettavissa, ja jonkin verran parametrien varmennus voidaan tehdä kyselyllä tietokannasta.

Virallinen verkkosivusto mainitsee reititysrajoitukset vain lyhyesti, ja tässä artikkelissa annetaan konkreettisia esimerkkejä reititysrajoitteiden käytöstä.





Edellinen:Zero Foundation C# (täysväriversio) Tomorrow Technology
Seuraava:ASP.NET Core – Razor View Import Usage Description
 Vuokraisäntä| Julkaistu 6.5.2019 9.32.15 |
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com