Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 16017|Antwoord: 1

[.NET Core] ASP.NET Implementatie van aangepaste routeringsbeperkingen in Core

[Link kopiëren]
Geplaatst op 06-05-2019 09:30:30 | | |
Routingbeperkingen

ASP.NET Core kun je variabelen doorgeven aan URL's door routeringstemplates te definiëren, en je kunt standaardinstellingen, optionele en beperkingen voor variabelen geven.

De beperking wordt gebruikt door de gespecificeerde beperkingsnaam toe te voegen aan de attribuutroute, die als volgt wordt gebruikt:

Enkele beperkingen zijn al binnen het raamwerk gegeven, als volgt:

Beperkingen
voorbeeld
Voorbeelden van wedstrijden
illustreren
int
{id:int}
123456789, -123456789
Match elk geheel getal
Bool
{active:bool}
waar, VALS
Match waar of onwaar (hoofdlettergevoelig)
Datum en tijd
{dob:datetime}
2016-12-31, 2016-12-31 19:32
Komt overeen met geldige DateTime-waarden (in vaste locatie - zie waarschuwing)
Decimale
{price:decimaal}
49.99, -1,000.01
Komt overeen met geldige decimale waarden (in vaste locatie - zie waarschuwing)
Dubbel
{gewicht:dubbel}
1,234, -1.001,01e8
Komt overeen met geldige dubbele waarden (in vaste locatie - zie waarschuwing)
Float
{gewicht:float}
1,234, -1.001,01e8
Komt overeen met geldige floatwaarden (in vaste lokaliteit - zie waarschuwingen)
Guid
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Komt overeen met geldige GUID-waarden
lang
{tikt:lang}
123456789, -123456789
Matcht geldige lange waarden
minlength(waarde)
{gebruikersnaam:minlength(4)}
Rick
De string moet minstens 4 tekens hebben
maxlength(waarde)
{bestandsnaam:maxlength(8)}
Richard
Strings mogen niet langer zijn dan 8 tekens
lengte(lengte)
{bestandsnaam:lengte(12)}
somefile.txt
De string moet precies 12 tekens zijn
lengte(min,max)
{bestandsnaam:lengte(8,16)}
somefile.txt
De string moet minstens 8 tekens zijn en niet meer dan 16 tekens
min(value)
{leeftijd:min(18)}
19
De geheel getal moet minstens 18 zijn
max(waarde)
{leeftijd:max(120)}
91
De gehele getalwaarde mag niet groter zijn dan 120
Bereik(min,max)
{leeftijd:bereik(18.120)}
91
De gehele getalwaarde moet minstens 18 zijn en niet hoger zijn dan 120
alpha
{naam:alpha}
Rick
De string moet bestaan uit één of meer alfabetische tekens (a-z, hoofdlettergevoelig).
regex(uitdrukking)
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
De string moet overeenkomen met de reguliere expressie (zie tips over het definiëren van reguliere expressies)
Vereist
{naam:vereist}
Rick
Gebruikt om de aanwezigheid van niet-parametrische waarden tijdens URL-generatie af te dwingen


De ingebouwde beperkingen werken voor de meeste veelvoorkomende gebruikssituaties, maar soms moeten we toch het gewenste effect aanpassen.
Aangepaste routeringsbeperkingen

Een aangepaste beperking is het implementeren van de IRouteConstraint-interface en vervolgens de Match-methode overbelasten, die vier parameters heeft.

De eerste parameter, httpContext, is de context van het huidige verzoek

De tweede parameter, route, is de route waartoe de huidige beperking behoort

De derde parameter, routeKey, is de naam van de variabele die momenteel wordt gecontroleerd, zoals id in het voorbeeld aan het begin van het artikel
De vierde parameterwaarden zijn de woordenboekwaarde die de huidige URL overeenkomt, zoals de route van het voorbeeld aan het begin van het artikel; als de URL users/1 is, dan is er een woordenboek met key = id , waarde = 1. Natuurlijk zijn er ook waarden voor andere variabelen, zoals controller, actie, enzovoort.

De vijfde parameter, routeDirection, is een opgesomde waarde die aangeeft of de URL wordt opgevraagd door het web of wordt gegenereerd door een methode zoals Url.Action.

We willen bijvoorbeeld een beperking definiëren die specificeert dat de parameters die door de route worden doorgegeven de gespecificeerde enumeratiewaarde moeten zijn.

Laten we eerst een enum definiëren:


Definieer dan de beperkingen:

Voeg aangepaste beperkingen toe aan de ConfigureServices-methode in Startup.cs:
Gebruik van beperkingen op routes:

(WebApplicationTest is de huidige naamruimte)


{id:int:min(2)} route moet min(2) gebruiken, anders is er een conflict voor id = 0 of id = 1.

Voer het programma uit en match onze aangepaste constraints wanneer de routes api/test/0, api/test/1, api/test/true en api/test/false zijn.

Als de route api/test/{integer groter dan 2} is, match dan de tweede route.

Andere gevallen komen overeen met de derde route.

conclusie

Routingbeperkingen zijn in sommige scenario's een zeer nuttige functie, die de controleparameters in de controller kunnen verminderen, en de functie van gedeeltelijke parametervalidatie kan worden geïmplementeerd met declaratieve attruibute, en sommige dubbele controles kunnen worden uitgepakt tot constraints voor openbaar gebruik.

De constructor van de constraint kan worden geïnjecteerd, waardoor deze zeer uitbreidbaar is, en enige parameterverificatie kan worden uitgevoerd door de database te bevragen.

De officiële website noemt routeringsbeperkingen slechts kort, en dit artikel geeft specifieke voorbeelden van het gebruik van routeringsbeperkingen.





Vorig:Zero Foundation C# (Full Color versie) Tomorrow Technology
Volgend:ASP.NET Core – Razor View Import Gebruiksbeschrijving
 Huisbaas| Geplaatst op 06-05-2019 09:32:15 |
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com