Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 16017|Svar: 1

[.NET Core] ASP.NET Implementering af brugerdefinerede routingbegrænsninger i Core

[Kopier link]
Opslået på 06/05/2019 09.30.30 | | |
Routingbegrænsninger

ASP.NET Core kan du sende variabler på URL'er ved at definere routing-skabeloner, og du kan give standardindstillinger, valgmuligheder og begrænsninger for variabler.

Begrænsningen bruges ved at tilføje det specificerede begrænsningsnavn til attributruten, som bruges som følger:

Nogle begrænsninger er allerede angivet i rammen, som følger:

Begrænsninger
eksempel
Eksempler på kampe
illustrere
int
{id:int}
123456789, -123456789
Match et vilkårligt heltal
Bool
{aktiv:bool}
sandt, falsk
Match sand eller falsk (kasusfølsom)
Datotidspunkt
{dob:datetime}
2016-12-31, 2016-12-31 19:32
Matcher gyldige DateTime-værdier (i fast lokalitet - se advarsel)
Decimal
{price:decimal}
49.99, -1,000.01
Matcher gyldige decimalværdier (i fast lokalitet - se advarsel)
Dobbelt
{vægt:dobbelt}
1,234, -1.001,01e8
Matcher gyldige dobbeltværdier (i fast lokalitet - se advarsel)
Float
{vægt:flyd}
1,234, -1.001,01e8
Matcher gyldige float-værdier (i fast lokalitet - se advarsler)
guid
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Matcher gyldige GUID-værdier
Lang
{tikker: lang}
123456789, -123456789
Matches gyldige lange værdier
minlength(værdi)
{brugernavn:minlength(4)}
Rick
Strengen skal være mindst 4 tegn
maxlength(værdi)
{filnavn:maxlength(8)}
Richard
Strenge må ikke overstige 8 tegn
længde(længde)
{filnavn:længde(12)}
somefile.txt
Strengen skal være præcis 12 tegn
længde(min,max)
{filnavn:længde(8,16)}
somefile.txt
Strengen skal være mindst 8 tegn og højst 16 tegn
min(værdi)
{age:min(18)}
19
Heltalsværdien skal være mindst 18
max(værdi)
{age:max(120)}
91
Heltalsværdien må ikke overstige 120
Afstand(min,max)
{age:range(18,120)}
91
Heltalsværdien må være mindst 18 og ikke overstige 120
Alpha
{name:alpha}
Rick
Strengen skal bestå af et eller flere alfabetiske tegn (a-z, kasusfølsom).
regex(udtryk)
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
Strengen skal matche det regulære udtryk (se tips til definition af regulære udtryk)
Kræves
{name:required}
Rick
Bruges til at håndhæve tilstedeværelsen af ikke-parametriske værdier under URL-generering


De indbyggede begrænsninger fungerer til de fleste almindelige anvendelsestilfælde, men nogle gange skal vi stadig tilpasse den ønskede effekt.
Brugerdefinerede routingbegrænsninger

En brugerdefineret begrænsning er at implementere IRouteConstraint-grænsefladen og derefter overbelaste Match-metoden, som har fire parametre.

Den første parameter, httpContext, er konteksten for den aktuelle anmodning

Den anden parameter, ruten, er den rute, som den nuværende begrænsning hører til

Den tredje parameter, routeKey, er navnet på den variabel, der aktuelt er tjekket, såsom id i eksemplet i begyndelsen af artiklen
Den fjerde parameterværdi er den ordbogsværdi, som den aktuelle URL matcher, såsom ruten for eksemplet i begyndelsen af artiklen; hvis URL'en er users/1, findes der en ordbog med nøgle = id , værdi = 1. Selvfølgelig er der også værdier for andre variable, såsom controller, action osv.

Den femte parameter, routeDirection, er en opregnet værdi, der angiver, om URL'en er anmodet af webben eller genereret af en metode som Url.Action.

For eksempel ønsker vi at definere en begrænsning, der specificerer, at de parametre, ruten passerer, skal være den angivne opramningsværdi.

Lad os først definere et enum:


Definér derefter begrænsningerne:

Tilføj brugerdefinerede begrænsninger til ConfigureServices-metoden i Startup.cs:
Brug af begrænsninger på ruter:

(WebApplicationTest er det nuværende navnerum)


{id:int:min(2)} ruten skal bruge min(2), ellers vil der opstå en konflikt om id = 0 eller id = 1.

Kør programmet og match vores brugerdefinerede begrænsninger, når ruterne er api/test/0, api/test/1, api/test/true og api/test/false.

Hvis ruten er api/test/{heltal større end 2}, match den anden rute.

Andre tilfælde matcher den tredje rute.

konklusion

Routing-begrænsninger er en meget nyttig funktion i nogle scenarier, som kan reducere kontrolparametrene i controlleren, og funktionen med delvis parametervalidering kan implementeres ved deklarativ attruibute, og nogle duplikerede kontroller kan udtrækkes til begrænsninger til offentlig brug.

Konstruktøren af begrænsningen kan injiceres, så den kan være meget udvidelig, og noget parameterverifikation kan udføres ved at forespørge databasen.

Den officielle hjemmeside nævner kun kort routingbegrænsninger, og denne artikel giver specifikke eksempler på brugen af routingbegrænsninger.





Tidligere:Zero Foundation C# (fuldfarveversion) Tomorrow Technology
Næste:ASP.NET Core – Razor View Import Brugsbeskrivelse
 Udlejer| Opslået på 06/05/2019 09.32.15 |
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com