Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 16017|Svar: 1

[.NET Core] ASP.NET Implementering av anpassade routningsbegränsningar i Core

[Kopiera länk]
Publicerad på 2019-05-06 09:30:30 | | |
Ruttningsbegränsningar

ASP.NET Core kan du skicka variabler på URL:er genom att definiera routingmallar, och du kan tillhandahålla standardinställningar, valbara variabler och begränsningar.

Begränsningen används genom att lägga till det specificerade begränsningsnamnet till attributrutten, som används enligt följande:

Vissa begränsningar finns redan i ramverket, enligt följande:

Begränsningar
exempel
Exempel på matcher
illustrera
int
{id:int}
123456789, -123456789
Matcha vilket heltal som helst
Bool
{aktiv:bool}
Sant, FALSKT
Matcha sant eller falskt (kasuskänsligt)
Datumtid
{dob:datetime}
2016-12-31, 2016-12-31 19:32
Matchar giltiga DateTime-värden (i fast lokal miljö – se varning)
Decimal
{price:decimal}
49.99, -1,000.01
Matchar giltiga decimalvärden (i fast lokalitet – se varning)
dubbel
{vikt:dubbel}
1,234, -1 001,01e8
Matchar giltiga dubbla värden (i fast lokalitet – se varning)
Flott
{vikt:flyt}
1,234, -1 001,01e8
Matchar giltiga flyttalvärden (i fast lokalitet – se varningar)
guid
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Matchar giltiga GUID-värden
Lång
{ticks:long}
123456789, -123456789
Matchar giltiga långa värden
minlength(value)
{username:minlength(4)}
Rick
Strängen måste vara minst 4 tecken
maxlength(värde)
{filnamn:maxlength(8)}
Richard
Strängar får inte överstiga 8 tecken
längd(längd)
{filnamn:längd(12)}
somefile.txt
Strängen måste vara exakt 12 tecken lång
längd(min,max)
{filnamn:length(8,16)}
somefile.txt
Strängen måste vara minst 8 tecken och högst 16 tecken
min(value)
{age:min(18)}
19
Heltalsvärdet måste vara minst 18
max(värde)
{age:max(120)}
91
Heltalsvärdet får inte överstiga 120
Räckvidd(min,max)
{ålder:intervall(18 120)}
91
Heltalsvärdet måste vara minst 18 och inte överstiga 120
Alpha
{name:alpha}
Rick
Strängen måste bestå av en eller flera alfabetiska tecken (a–z, kasuskänsliga).
regex (uttryck)
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
Strängen måste matcha det reguljära uttrycket (se tips om definition av reguljära uttryck)
krävs
{name:required}
Rick
Används för att upprätthålla närvaron av icke-parametriska värden under URL-generering


De inbyggda begränsningarna fungerar för de flesta vanliga användningsområden, men ibland måste vi ändå anpassa den effekt vi vill ha.
Anpassade routningsbegränsningar

En anpassad begränsning är att implementera IRouteConstraint-gränssnittet och sedan överbelasta Match-metoden, som har fyra parametrar.

Den första parametern, httpContext, är kontexten för den aktuella förfrågan

Den andra parametern, rutt, är den rutt som den aktuella begränsningen tillhör

Den tredje parametern, routeKey, är namnet på den variabel som för närvarande kontrolleras, såsom id i exemplet i början av artikeln
Det fjärde parametervärdet är det ordboksvärde som den aktuella URL:en matchar, såsom rutten för exemplet i början av artikeln, om URL:en är users/1, finns det en ordbok med nyckel = id , värde = 1. Självklart finns det också värden för andra variabler, som controller, action osv.

Den femte parametern, routeDirection, är ett uppräknat värde som anger om URL:en efterfrågas av webben eller genereras av en metod som Url.Action.

Till exempel vill vi definiera en begränsning som specificerar att parametrarna som passeras av rutten måste vara det angivna uppräkningsvärdet.

Låt oss definiera ett enum först:


Definiera sedan begränsningarna:

Lägg till anpassade begränsningar i ConfigureServices-metoden i Startup.cs:
Användning av begränsningar på rutter:

(WebApplicationTest är det nuvarande namnrymden)


{id:int:min(2)} rutten måste använda min(2), annars uppstår en konflikt för id = 0 eller id = 1.

Kör programmet och matcha våra anpassade begränsningar när rutterna är api/test/0, api/test/1, api/test/true och api/test/false.

Om rutten är api/test/{heltal större än 2}, matcha den andra rutten.

Andra fall stämmer överens med den tredje vägen.

slutsats

Routingbegränsningar är en mycket användbar funktion i vissa scenarier, vilket kan minska kontrollparametrarna i kontrollern, och funktionen partiell parametervalidering kan implementeras med deklarativ attruibute, och vissa dubblettkontroller kan extraheras till begränsningar för allmänhetens användning.

Konstruktorn av begränsning kan injiceras, så den kan vara mycket utbyggbar, och viss parameterverifiering kan göras genom att fråga databasen.

Den officiella webbplatsen nämner bara kort routningsbegränsningar, och denna artikel ger specifika exempel på användningen av routningsbegränsningar.





Föregående:Zero Foundation C# (fullfärgsversion) Tomorrow Technology
Nästa:ASP.NET Core – Razor View Import Användningsbeskrivning
 Hyresvärd| Publicerad på 2019-05-06 09:32:15 |
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com