Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 16017|Válasz: 1

[.NET mag] ASP.NET Egyedi útválasztási korlátozások megvalósítása a Core-ban

[Linket másol]
Közzétéve 2019. 05. 06. 9:30:30 | | |
Útvonaltervezési korlátok

ASP.NET Core esetén útvonal-sablonok meghatározásával továbbíthatod az URL-eken változókat, és megadhatod az alapértelmezett beállításokat, opcionális lehetőségeket és korlátokat a változókhoz.

A korlátozást úgy használják, hogy a megadott korlátozás nevet hozzáadják az attribútumhoz, amely a következőképpen történik:

Néhány korlátozás már rendelkezésre áll a keretrendszerben, az alábbiak szerint:

Korlátok
példa
Példák mérkőzésekre
illusztrál
int
{id:int}
123456789, -123456789
Egyeztess bármely egész számot
bool
{active:bool}
igaz, HAMIS
Igaz vagy hamis egyezés (kis- és kisméretérzékeny)
Dátum
{dob:datetime}
2016-12-31, 2016-12-31 19:32
Egyezik érvényes DateTime értékekkel (fix helyen – lásd a figyelmeztetést)
tizedes
{price:decimal}
49.99, -1,000.01
Érvényes tizedes értékeket egyezik meg (fix helyességben – lásd a figyelmeztetést)
Kettős
{súly:dupla}
1.234, -1,001.01e8
Érvényes dupla értékeket egyezik meg (fix helyen) – lásd a figyelmeztetést)
Float
{súly:lebeg}
1.234, -1,001.01e8
Érvényes lebegő értékeket egyezik (fix helyen – lásd figyelmeztetéseket)
Guid
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Érvényes GUID értékek egyezik
hosszú
{tik-e:hosszú}
123456789, -123456789
Érvényes hosszú értékek egyeztetései
minlength(érték)
{username:minlength(4)}
Rick
A láncsornak legalább 4 karakternek kell lennie
maxlength(érték)
{filename:maxlength(8)}
Richard
A láncsorok nem haladhatják meg 8 karaktert
hossz(hosszúság)
{filename:length(12)}
somefile.txt
A láncszálnak pontosan 12 karakterből kell állnia
hossz (min, max)
{filename:length(8,16)}
somefile.txt
A lánc legalább 8 karakterből álljon, és legfeljebb 16 karakterből állhat
min(érték)
{age:min(18)}
19
Az egész értéknek legalább 18-nak kell lennie
max(érték)
{age:max(120)}
91
Az egész szám nem haladhatja meg az 120-at
tartomány(min,max)
{age:range(18,120)}
91
Az egész szám értéknek legalább 18-nak kell lennie, és nem kell meghaladnia a 120-at
Alfa
{name:alpha}
Rick
A sorozatnak egy vagy több ábécé karakterből kell állnia (a-z, kis- és nagybetűs karakter).
regex kifejezés
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
A láncsornak egyeznie kell a reguláris kifejezéssel (lásd a szabályos kifejezések meghatározásához vonatkozó tippeket)
szükséges
{name:required}
Rick
A nem paraméteres értékek jelenlétének érvényesítésére használják az URL generálása során


A beépített korlátozások a legtöbb gyakori felhasználási esetnél működnek, de néha még mindig testreszabni kell a kívánt hatást.
Egyedi útvonalválasztási korlátozások

Egy egyedi korlátozás az IRouteConstraint interfész megvalósítása, majd túlterheljük a Match metódust, amelynek négy paramétere van.

Az első paraméter, a httpContext, a jelenlegi kérés kontextusa

A második paraméter, az útvonal, amelyhez a jelenlegi korlátozás tartozik

A harmadik paraméter, routeKey, a jelenleg ellenőrzött változó neve, például az id a cikk elején található példában
A negyedik paraméterértékek az a szótári érték, amelyhez az aktuális URL egyezik, például a cikk elején szereplő példa útvonala, ha az URL users/1, akkor van egy szótár, amelynek kulcsa = azonosító , érték = 1. Természetesen vannak más változók értékei is, mint például kontroller, akció stb.

Az ötödik paraméter, a routeDirection, egy felsorolt érték, amely azt jelzi, hogy az URL-t a web kéri-e, vagy például az URL.Action által generált.

Például olyan korlátozást szeretnénk definiálni, amely megadja, hogy az útvonal által átadott paramétereknek a megadott felsorolási értéknek kell lenniük.

Először definiáljuk az enumot:


Ezután definiáljuk a korlátokat:

Egyedi korlátozások hozzáadása a ConfigureServices metódushoz Startup.cs-ben:
Útvonalakra vonatkozó korlátozások alkalmazása:

(A WebApplicationTest a jelenlegi névtér)


{id:int:min(2)} útvonalnak min(2) kell használnia, különben ütközés alakul ki az id = 0 vagy id = 1 között.

Futtatd a programot, és egyeztesd meg a saját korlátainkat, amikor az útvonalak API/test/0, API/test/1, API/test/true, és API/test/hamis.

Ha az útvonal api/test/{egész szám, nagyobb, mint 2}, egyeztess a második útvonalat.

Más esetek a harmadik úthoz hasonlóak.

következtetés

Az útvonali korlátozások egyes helyzetekben nagyon hasznosak lehetnek, amelyek csökkenthetik a vezérlő ellenőrzési paramétereit, és a részleges paraméter validálás funkciója deklaratív attruibute segítségével valósítható meg, valamint néhány duplikált ellenőrzés nyilvános használatra korlátozott korlátozásokba vonható ki.

A korlátozás konstruktora beinjektálható, így nagyon kiterjeszthető, és néhány paraméterellenőrzés is elvégezhető az adatbázis lekérdezésével.

A hivatalos weboldal csak röviden említi az útvonalválasztási korlátozásokat, és ez a cikk konkrét példákat mutat be az útvonal-korlátozások használatára.





Előző:Zero Alapozó C# (Teljes színes változat) Tomorrow Technology
Következő:ASP.NET Core – Razor View import használat leírása
 Háziúr| Közzétéve 2019. 05. 06. 9:32:15 |
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com