Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 16017|Răspunde: 1

[.NET Core] ASP.NET Implementarea constrângerilor de rutare personalizate în Core

[Copiază linkul]
Postat pe 06.05.2019 09:30:30 | | |
Constrângeri de rutare

ASP.NET Core, poți transmite variabile pe URL-uri definind șabloane de rutare și poți oferi valori implicite, opționale și constrângeri pentru variabile.

Constrângerea este folosită prin adăugarea numelui constrângerii specificat la ruta de atribute, care este folosită astfel:

Unele constrângeri sunt deja prevăzute în cadrul cadrului, după cum urmează:

Constrângeri
exemplu
Exemple de meciuri
ilustra
int
{id:int}
123456789, -123456789
Potrivește orice număr întreg
bool
{active:bool}
adevărat, FALS
Potrivire cu adevărat sau fals (distins la majuscule)
Dată-oră
{dob:date-date}
2016-12-31, 2016-12-31 19:32
Se potrivește cu valorile valide de DateTime (în localitate fixă - vezi avertismentul)
Zecimal
{preț:zecimal}
49.99, -1,000.01
Se potrivește cu valorile zecimale valide (în localitate fixă - vezi avertismentul)
dublu
{greutate:dublu}
1.234, -1.001.01e8
Se potrivește cu valori duble valide (în localitate fixă - vezi avertismentul)
Float
{weight:float}
1.234, -1.001.01e8
Se potrivește cu valorile valide ale float-ului (în localitate fixă - vezi avertismentele)
Guid
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Se potrivește cu valorile valide ale GUID
lung
{ticks:long}
123456789, -123456789
Se potrivește cu valorile lungi valide
minlength(value)
{username:minlength(4)}
Rick
Șirul trebuie să aibă cel puțin 4 caractere
maxlength(value)
{nume fișier:maxlength(8)}
Richard
Șirurile nu trebuie să depășească 8 caractere
Lungime(lungime)
{filename:length(12)}
somefile.txt
Șirul trebuie să aibă exact 12 caractere
Lungime(min,max)
{filename:length(8,16)}
somefile.txt
Șirul trebuie să aibă cel puțin 8 caractere și nu mai mult de 16 caractere
min(value)
{vârstă:min(18)}
19
Valoarea întreagă trebuie să fie cel puțin 18
max(valoare)
{vârstă:max(120)}
91
Valoarea întreagă nu trebuie să depășească 120
Rază (minimă, maximă)
{vârstă:interval(18,120)}
91
Valoarea întreagă trebuie să fie cel puțin 18 și să nu depășească 120
Alpha
{name:alpha}
Rick
Șirul trebuie să fie format din unul sau mai multe caractere alfabetice (a-z, diferență la majuscule).
regex (expresie)
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
Șirul trebuie să corespundă expresiei regulate (vezi sfaturi pentru definirea expresiilor regulate)
necesar
{nume:necesar}
Rick
Folosit pentru a impune prezența valorilor non-parametrice în timpul generării URL-urilor


Constrângerile încorporate funcționează pentru majoritatea cazurilor de utilizare comune, dar uneori tot trebuie să personalizăm efectul dorit.
Constrângeri de rutare personalizate

O constrângere personalizată este implementarea interfeței IRouteConstraint și apoi supraîncărcarea metodei Match, care are patru parametri.

Primul parametru, httpContext, este contextul cererii curente

Al doilea parametru, ruta, este ruta căreia îi aparține constrângerea curentă

Al treilea parametru, routeKey, este numele variabilei bifate în prezent, cum ar fi id în exemplul de la începutul articolului
A patra valoare a parametrului este valoarea din dicționar pe care URL-ul curent o potrivește, cum ar fi ruta exemplului de la începutul articolului; dacă URL-ul este users/1, atunci există un dicționar cu cheia = id , valoare = 1. Desigur, există și valori pentru alte variabile, cum ar fi controler, acțiune etc.

Al cincilea parametru, routeDirection, este o valoare enumerată care reprezintă dacă URL-ul este solicitat de web sau generat printr-o metodă precum Url.Action.

De exemplu, dorim să definim o constrângere care specifică faptul că parametrii trecuți de rută trebuie să fie valoarea de enumerare specificată.

Să definim mai întâi un enum:


Apoi definiți constrângerile:

Adaugă constrângeri personalizate metodei ConfigureServices în Startup.cs:
Folosirea constrângerilor pe rute:

(WebApplicationTest este spațiul de nume actual)


{id:int:min(2)} ruta trebuie să folosească min(2), altfel va exista un conflict pentru id = 0 sau id = 1.

Rulează programul și potrivește constrângerile noastre personalizate când rutele sunt api/test/0, api/test/1, api/test/true și api/test/false.

Dacă ruta este api/test/{integer mai mare decât 2}, potrivește a doua rută.

Alte cazuri corespund celei de-a treia variante.

concluzie

Constrângerile de rutare sunt o caracteristică foarte utilă în unele scenarii, care pot reduce parametrii de verificare în controler, iar funcția de validare parțială a parametrilor poate fi implementată folosind attuibit declarativ, iar unele verificări duplicate pot fi extrase în constrângeri pentru uz public.

Constructorul constrângerii poate fi injectat, deci poate fi foarte extensibil, iar unele verificări ale parametrilor pot fi făcute prin interogarea bazei de date.

Site-ul oficial menționează doar pe scurt constrângerile de rutare, iar acest articol oferă exemple specifice de utilizare a constrângerilor de rutare.





Precedent:Zero Foundation C# (Versiune color) Tehnologia de mâine
Următor:ASP.NET Core – Descrierea utilizării importului Razor View
 Proprietarul| Postat pe 06.05.2019 09:32:15 |
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com