Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 16017|Odpověď: 1

[.NET Core] ASP.NET Implementace vlastních směrovacích omezení v jádru

[Kopírovat odkaz]
Zveřejněno 06.05.2019 9:30:30 | | |
Směrovací omezení

ASP.NET Core můžete předávat proměnné na URL definováním směrovacích šablon a můžete poskytovat výchozí, volitelná nastavení a omezení pro proměnné.

Toto omezení se používá přidáním specifikovaného názvu omezení k atributové cestě, které se používá následovně:

Některá omezení jsou již v rámci uvedena, a to následovně:

Omezení
příklad
Příklady zápasů
ilustrovat
int
{id:int}
123456789, -123456789
Přirovnejte libovolné celé číslo
Bool
{active:bool}
pravda, NEPRAVDA
Porovnat pravdivost nebo nepravdu (citlivé na velká písmena)
Datetime
{dob:datetime}
2016-12-31, 2016-12-31 19:32
Shoduje platné hodnoty DateTime (v pevné lokalitě – viz varování)
desetinná
{cena:desetinné}
49.99, -1,000.01
Odpovídá platným desetinným hodnotám (v pevné lokalitě – viz varování)
dvojitý
{weight:double}
1,234, -1,001,01e8
Splňuje platné dvojnásobné hodnoty (v pevné lokalitě – viz varování)
Plovák
{weight:float}
1,234, -1,001,01e8
Shoduje platné float hodnoty (v pevné lokalitě – viz varování)
GUID
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Odpovídá platným hodnotám GUID
dlouhý
{tikání:dlouhé}
123456789, -123456789
Odpovídá platným dlouhým hodnotám
minlength(hodnota)
{username:minlength(4)}
Rick
Řetězec musí mít alespoň 4 znaky
maxlength(hodnota)
{filename:maxlength(8)}
Richard
Řetězce nesmí přesáhnout 8 znaků
délka (délka)
{filename:length(12)}
somefile.txt
Řetězec musí mít přesně 12 znaků
délka (min,max)
{filename:length(8,16)}
somefile.txt
Řetězec musí mít alespoň 8 znaků a nesmí být více než 16 znaků
min(hodnota)
{věk:min(18)}
19
Celočíselná hodnota musí být alespoň 18
max(value)
{věk:max(120)}
91
Hodnota celého čísla nesmí přesáhnout 120
Rozsah (minimální, maximálně)
{věk:rozsah(18,120)}
91
Hodnota celých čísel musí být alespoň 18 a nesmí přesáhnout 120
alfa
{name:alpha}
Rick
Řetězec musí obsahovat jeden nebo více písmen písmen (a-z, citlivé na velká písmena).
regex(výraz)
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
Řetězec musí odpovídat regulárnímu výrazu (viz tipy na definování regulárních výrazů)
požadovaný
{name:required}
Rick
Používá se k vynucení přítomnosti neparametrických hodnot během generování URL


Vestavěná omezení fungují pro většinu běžných případů použití, ale někdy je stále potřeba přizpůsobit požadovaný efekt.
Omezení vlastního směrování

Vlastní omezení je implementovat rozhraní IRouteConstraint a poté přetížit metodu Match, která má čtyři parametry.

Prvním parametrem, httpContext, je kontext aktuálního požadavku

Druhý parametr, trasa, je trasa, ke které patří aktuální omezení

Třetí parametr, routeKey, je název aktuálně kontrolované proměnné, například id v příkladu na začátku článku
Čtvrtým parametrem je slovníková hodnota, která odpovídá aktuální URL, například trasa příkladu na začátku článku, pokud je URL users/1, pak existuje slovník s key = id , value = 1. Samozřejmě existují i hodnoty pro jiné proměnné, jako je ovladač, akce atd.

Pátý parametr, routeDirection, je vyčíslovaná hodnota, která představuje, zda je URL požadována webem, nebo generována metodou jako Url.Action.

Například chceme definovat omezení, které určuje, že parametry předané trasou musí být zadaná hodnota výčtu.

Nejprve si definujme enum:


Pak definujte omezení:

Přidejte vlastní omezení do metody ConfigureServices v Startup.cs:
Použití omezení na trasy:

(WebApplicationTest je současný jmenný prostor)


{id:int:min(2)} Trasa musí použít min(2), jinak dojde ke konfliktu pro id = 0 nebo id = 1.

Spusť program a srovnat naše vlastní omezení, když jsou trasy api/test/0, api/test/1, api/test/true a api/test/false.

Pokud je trasa api/test/{celé číslo větší než 2}, spojte druhou trasu.

Jiné případy odpovídají třetí cestě.

závěr

Směrovací omezení jsou v některých scénářích velmi užitečnou funkcí, která může snížit kontrolní parametry v regulátoru, a funkce částečné validace parametrů může být implementována pomocí deklarativního attruibute, přičemž některé duplicitní kontroly lze extrahovat do omezení pro veřejné použití.

Konstruktor omezení lze injektovat, takže může být velmi rozšiřitelný, a část ověření parametrů lze provést dotazováním databáze.

Oficiální web pouze krátce zmiňuje směrovací omezení a tento článek poskytuje konkrétní příklady použití směrovacích omezení.





Předchozí:Zero Foundation C# (Barevná verze) Technologie zítřka
Další:ASP.NET Core – Popis importu Razor View
 Pronajímatel| Zveřejněno 06.05.2019 9:32:15 |
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com