Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 16017|Odpoveď: 1

[.NET Core] ASP.NET Implementácia vlastných smerovacích obmedzení v jadre

[Kopírovať odkaz]
Zverejnené 6. 5. 2019 9:30:30 | | |
Smerovacie obmedzenia

ASP.NET Core môžete prenášať premenné na URL pomocou definovania šablón smerovania a môžete poskytovať predvolené, voliteľné a obmedzenia pre premenné.

Obmedzenie sa používa pridaním špecifikovaného názvu obmedzenia k atribútovej trase, ktorý sa používa nasledovne:

Niektoré obmedzenia sú už v rámci rámca uvedené, nasledovne:

Obmedzenia
príklad
Príklady zápasov
ilustrovať
int
{id:int}
123456789, -123456789
Zladiť sa s ľubovoľným celým číslom
Bool
{active:bool}
pravda, NEPRAVDA
Porovnať pravdu alebo nepravdu (záleží na veľkých písmenách)
Datetime
{dob:datetime}
2016-12-31, 2016-12-31 19:32
Zodpovedá platným hodnotám DateTime (v pevnej lokalite – pozri varovanie)
desatinná sústava
{cena:desatinné}
49.99, -1,000.01
Zodpovedá platným desatinným hodnotám (v pevnej lokalite – pozri varovanie)
dvojitá
{weight:double}
1,234, -1,001,01e8
Zodpovedá platným dvojitým hodnotám (v pevnej lokalite – pozri varovanie)
Plavák
{weight:float}
1,234, -1,001,01e8
Zodpovedá platným float hodnotám (v pevnej lokalite – pozri varovania)
GUID
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Zodpovedá platným hodnotám GUID
dlhý
{tiká:dlhá}
123456789, -123456789
Zodpovedá platným dlhým hodnotám
minlength(hodnota)
{username:minlength(4)}
Rick
Reťazec musí mať aspoň 4 znaky
maxlength(hodnota)
{filename:maxlength(8)}
Richard
Reťazce nesmú presiahnuť 8 znakov
dĺžka (dĺžka)
{filename:length(12)}
somefile.txt
Reťazec musí mať presne 12 znakov
dĺžka (min,max)
{filename:length(8,16)}
somefile.txt
Reťazec musí mať aspoň 8 znakov a nesmie mať viac ako 16 znakov
min(hodnota)
{vek:min(18)}
19
Celočíselná hodnota musí byť aspoň 18
max(hodnota)
{vek:max(120)}
91
Celočíselná hodnota nesmie presiahnuť 120
Rozsah (minimálne, maximum)
{vek:rozsah(18,120)}
91
Celočíselná hodnota musí byť aspoň 18 a nesmie presiahnuť 120
alfa
{meno:alfa}
Rick
Reťazec musí pozostávať z jedného alebo viacerých písmen abecedy (a-z, citlivé na veľké písmená).
regex(výraz)
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
Reťazec musí zodpovedať regulárnemu výrazu (pozri tipy na definovanie regulárnych výrazov)
požadovaný
{name:required}
Rick
Používa sa na vynútenie prítomnosti neparametrických hodnôt počas generovania URL


Vstavané obmedzenia fungujú pre väčšinu bežných prípadov použitia, ale niekedy si stále musíme prispôsobiť požadovaný efekt.
Obmedzenia vlastného smerovania

Vlastným obmedzením je implementovať rozhranie IRouteConstraint a potom preťažiť metódu Match, ktorá má štyri parametre.

Prvý parameter, httpContext, je kontext aktuálnej požiadavky

Druhý parameter, trasa, je trasa, ku ktorej patrí aktuálne obmedzenie

Tretí parameter, routeKey, je názov aktuálne kontrolovanej premennej, napríklad id v príklade na začiatku článku
Štvrtým parametrom je slovníková hodnota, ktorú aktuálna URL zodpovedá, napríklad trasa príkladu na začiatku článku, ak je URL users/1, potom existuje slovník s key = id , value = 1. Samozrejme, existujú aj hodnoty pre iné premenné, ako je ovládač, akcia a podobne.

Piaty parameter, routeDirection, je enumerovaná hodnota, ktorá reprezentuje, či je URL požadovaná webom alebo generovaná metódou ako Url.Action.

Napríklad chceme definovať obmedzenie, ktoré určuje, že parametre prenesené trasou musia byť zadaná hodnota enumerácie.

Najprv si definujme enum:


Potom definujte obmedzenia:

Pridajte vlastné obmedzenia do metódy ConfigureServices v Startup.cs:
Použitie obmedzení na trasy:

(WebApplicationTest je aktuálny menný priestor)


{id:int:min(2)} trasa musí použiť min(2), inak vznikne konflikt pre id = 0 alebo id = 1.

Spustiť program a zladiť naše vlastné obmedzenia, keď sú trasy api/test/0, api/test/1, api/test/true a api/test/false.

Ak je trasa api/test/{celé číslo väčšie ako 2}, priradíme druhú trasu.

Iné prípady zodpovedajú tretej trase.

záver

Routovacie obmedzenia sú v niektorých scenároch veľmi užitočnou funkciou, ktorá môže znížiť kontrolné parametre v regulátore, a funkcia čiastočnej validácie parametrov môže byť implementovaná pomocou deklaratívneho attruibute, pričom niektoré duplicitné kontroly je možné extrahovať do obmedzení pre verejné použitie.

Konštruktér obmedzenia môže byť injektovaný, takže môže byť veľmi rozšíriteľný, a časť overenia parametrov je možné vykonať dotazovaním databázy.

Oficiálna webová stránka len stručne spomína smerovacie obmedzenia a tento článok poskytuje konkrétne príklady použitia smerovacích obmedzení.





Predchádzajúci:Zero Foundation C# (plnofarebná verzia) Technológia zajtrajška
Budúci:ASP.NET Core – Popis importu v Razor View
 Prenajímateľ| Zverejnené 6. 5. 2019 9:32:15 |
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com