Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 16017|Svare: 1

[.NET Core] ASP.NET Implementering av egendefinerte rutingsbegrensninger i Core

[Kopier lenke]
Publisert på 06.05.2019 09:30:30 | | |
Rutingsbegrensninger

ASP.NET Core kan du sende variabler på URL-er ved å definere rutingmaler, og du kan gi standardinnstillinger, valgfrie og begrensninger for variabler.

Begrensningen brukes ved å legge til det angitte begrensningsnavnet til attributtruten, som brukes som følger:

Noen begrensninger er allerede gitt i rammeverket, som følger:

Begrensninger
eksempel
Eksempler på kamper
illustrere
Int
{id:int}
123456789, -123456789
Match et hvilket som helst heltall
Bool
{active:bool}
Sant, FALSKT
Match true or false (kasusfølsom)
Datotid
{dob:datetime}
2016-12-31, 2016-12-31 19:32
Matcher gyldige DateTime-verdier (i fast lokalitet – se advarsel)
Desimalnummer
{price:decimal}
49.99, -1,000.01
Matcher gyldige desimalverdier (i fast lokalitet – se advarsel)
Dobbel
{vekt:dobbel}
1,234, -1 001,01e8
Matcher gyldige doble verdier (i fast lokalitet – se advarsel)
Float
{vekt:flyt}
1,234, -1 001,01e8
Matcher gyldige flyttalverdier (i fast lokalitet – se advarsler)
guid
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Matcher gyldige GUID-verdier
lang
{tikker: lang}
123456789, -123456789
Matcher gyldige lange verdier
minlength(verdi)
{username:minlength(4)}
Rick
Strengen må være minst 4 tegn
Maxlength(verdi)
{filnavn:maxlength(8)}
Richard
Strenger må ikke overstige 8 tegn
Lengde(lengde)
{filnavn:lengde(12)}
somefile.txt
Strengen må være nøyaktig 12 tegn
lengde(min,maks)
{filnavn:lengde(8,16)}
somefile.txt
Strengen må være minst 8 tegn og ikke mer enn 16 tegn
min(value)
{alder:min(18)}
19
Heltalsverdien må være minst 18
max(verdi)
{age:max(120)}
91
Heltalsverdien må ikke overstige 120
Rekkevidde(min,maks)
{age:range(18,120)}
91
Heltalsverdien må være minst 18 og ikke overstige 120
Alpha
{name:alpha}
Rick
Strengen må bestå av ett eller flere alfabetiske tegn (a-z, kasussensitive).
regex (uttrykk)
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
Strengen må samsvare med det regulære uttrykket (se tips for å definere regulære uttrykk)
påkrevd
{name:required}
Rick
Brukes for å håndheve tilstedeværelsen av ikke-parametriske verdier under URL-generering


De innebygde begrensningene fungerer for de fleste vanlige brukstilfeller, men noen ganger må vi fortsatt tilpasse effekten vi ønsker.
Egendefinerte rutingsbegrensninger

En tilpasset begrensning er å implementere IRouteConstraint-grensesnittet og deretter overbelaste Match-metoden, som har fire parametere.

Den første parameteren, httpContext, er konteksten til den nåværende forespørselen

Den andre parameteren, ruten, er ruten som den nåværende begrensningen tilhører

Den tredje parameteren, routeKey, er navnet på variabelen som for øyeblikket sjekkes, slik som id i eksempelet i begynnelsen av artikkelen
De fjerde parameterverdiene er ordboksverdien som den nåværende URL-en matcher, for eksempel ruten til eksempelet i begynnelsen av artikkelen; hvis URL-en er users/1, finnes det en ordbok med nøkkel = id , verdi = 1. Selvfølgelig finnes det også verdier for andre variabler, som kontroller, handling, osv.

Den femte parameteren, routeDirection, er en opplistet verdi som angir om URL-en forespørres av nettet eller genereres av en metode som Url.Action.

For eksempel ønsker vi å definere en begrensning som spesifiserer at parameterne som passeres av ruten må være den angitte oppramsningsverdien.

La oss definere et enum først:


Definer deretter begrensningene:

Legg til tilpassede begrensninger i ConfigureServices-metoden i Startup.cs:
Bruk av begrensninger på ruter:

(WebApplicationTest er det nåværende navnerommet)


{id:int:min(2)}-ruten må bruke min(2), ellers vil det oppstå konflikt om id = 0 eller id = 1.

Kjør programmet og matcher våre egendefinerte begrensninger når rutene er api/test/0, api/test/1, api/test/true og api/test/false.

Hvis ruten er api/test/{heltall større enn 2}, match den andre ruten.

Andre tilfeller samsvarer med den tredje ruten.

konklusjon

Routingbegrensninger er en svært nyttig funksjon i noen scenarioer, som kan redusere sjekkparameterne i kontrolleren, og funksjonen til delvis parametervalidering kan implementeres ved deklarativ attruibute, og noen duplikatkontroller kan trekkes ut til begrensninger for offentlig bruk.

Konstruktøren av begrensningen kan injisere, så den kan være svært utvidbar, og noe parameterverifisering kan gjøres ved å spørre databasen.

Den offisielle nettsiden nevner bare kort rutingbegrensninger, og denne artikkelen gir spesifikke eksempler på bruk av rutingsbegrensninger.





Foregående:Zero Foundation C# (fullfargeversjon) Tomorrow Technology
Neste:ASP.NET Core – Razor View Import Bruksbeskrivelse
 Vert| Publisert på 06.05.2019 09:32:15 |
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com