Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 16017|Odpowiedź: 1

[.NET Core] ASP.NET Implementacja niestandardowych ograniczeń routingu w rdzeniu

[Skopiuj link]
Opublikowano 06.05.2019 09:30:30 | | |
Ograniczenia routingowe

ASP.NET Core możesz przekazywać zmienne na URL-ach poprzez definiowanie szablonów routingu oraz podawać domyślne, opcjonalne i ograniczenia dla zmiennych.

Ograniczenie jest używane przez dodanie określonej nazwy ograniczenia do ścieżki atrybutu, która jest używana w następujący sposób:

Niektóre ograniczenia są już zawarte w ramach, w następujący sposób:

Ograniczenia
przykład
Przykłady meczów
Ilustrują
int
{id:int}
123456789, -123456789
Dopasuj dowolną liczbę całkowitą
Bool
{active:bool}
prawda, FAŁSZYWA
Dopasowanie prawda lub fałsz (rozróżnienie wielkości liter)
Datetime
{dob:datetime}
2016-12-31, 2016-12-31 19:32
Pasuje do ważnych wartości DateTime (w stałej lokalizacji – zobacz ostrzeżenie)
Dziesiętny
{cena:dziesiętny}
49.99, -1,000.01
Pasuje do ważnych wartości dziesiętnych (w stałej lokalizacji – patrz ostrzeżenie)
podwójne
{weight:double}
1.234, -1,001.01e8
Dopasowuje ważne wartości podwójne (w stałej lokalizacji – patrz ostrzeżenie)
Pływanie
{weight:float}
1.234, -1,001.01e8
Pasuje do ważnych wartości float (w stałej lokalizacji – zobacz ostrzeżenia)
GUID
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Dopasowuje ważne wartości GUID
długie
{tik:long}
123456789, -123456789
Pasuje do ważnych wartości długich
długość minlength (wartość)
{username:minlength(4)}
Rick
Ciąg musi mieć co najmniej 4 znaki
maxlength(value)
{filename:maxlength(8)}
Richard
Ciągi znaków nie mogą przekraczać 8 znaków
Długość(długość)
{filename:length(12)}
somefile.txt
Ciąg musi mieć dokładnie 12 znaków
długość (min,max)
{filename:length(8,16)}
somefile.txt
Ciąg musi mieć co najmniej 8 znaków i nie więcej niż 16 znaków
min(value)
{wiek:min(18)}
19
Wartość całkowita musi wynosić co najmniej 18
max(value)
{wiek:max(120)}
91
Wartość całkowita nie może przekraczać 120
Zakres (minimum, maks)
{wiek:zakres(18,120)}
91
Wartość całkowita musi wynosić co najmniej 18 i nie przekraczać 120
alfa
{name:alpha}
Rick
Ciąg musi składać się z jednego lub więcej znaków alfabetycznych (a-z, na wielka litera).
regex(expression)
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
Ciąg musi odpowiadać wyrażeniu regularnemu (zobacz wskazówki dotyczące definiowania wyrażeń regularnych)
Wymagane
{name:required}
Rick
Używany do wymuszania obecności wartości nieparametrycznych podczas generowania URL


Wbudowane ograniczenia działają w większości najczęstszych przypadków użycia, ale czasem nadal musimy dostosować efekt, jaki chcemy.
Ograniczenia niestandardowego routingu

Niestandardowym ograniczeniem jest implementacja interfejsu IRouteConstraint, a następnie przeciążenie metody Match, która ma cztery parametry.

Pierwszy parametr, httpContext, to kontekst bieżącego żądania

Drugi parametr, trasa, to trasa, do której należy aktualne ograniczenie

Trzeci parametr, routeKey, to nazwa aktualnie sprawdzanej zmiennej, na przykład id w przykładzie na początku artykułu
Czwartym parametrem jest wartość słownikowa, którą aktualny URL odpowiada, na przykład trasa przykładu na początku artykułu; jeśli URL to users/1, to istnieje słownik z key = id , value = 1. Oczywiście są też wartości innych zmiennych, takich jak kontroler, akcja itd.

Piąty parametr, routeDirection, to wyliczona wartość reprezentująca, czy adres URL jest żądany przez stronę internetową, czy generowany metodą taką jak Url.Action.

Na przykład chcemy zdefiniować ograniczenie, które określa, że parametry przekazywane przez trasę muszą być określoną wartością enumeracyjną.

Najpierw zdefiniujmy enum:


Następnie zdefiniuj ograniczenia:

Dodaj niestandardowe ograniczenia do metody ConfigureServices w Startup.cs:
Wykorzystanie ograniczeń na trasach:

(WebApplicationTest to obecna przestrzeń nazw)


{id:int:min(2)} trasa musi używać min(2), w przeciwnym razie wystąpi konflikt dla id = 0 lub id = 1.

Uruchom program i dopasuj nasze niestandardowe ograniczenia, gdy trasy to api/test/0, api/test/1, api/test/true oraz api/test/false.

Jeśli trasa to api/test/{liczba całkowita większa niż 2}, dopasuj drugą trasę.

Inne przypadki odpowiadają trzeciej trasie.

konkluzja

Ograniczenia routingu są bardzo przydatną funkcją w niektórych scenariuszach, co może zmniejszyć parametry kontrolne w kontrolerze, a funkcję częściowej walidacji parametrów można zaimplementować za pomocą deklaratywnego attruibute, a niektóre duplikaty sprawdzające można wyodrębnić do ograniczeń do użytku publicznego.

Konstruktor ograniczenia może być wstrzykiwany, dzięki czemu jest bardzo rozszerzalny, a część weryfikacji parametrów można wykonać poprzez zapytanie do bazy danych.

Oficjalna strona internetowa tylko krótko wspomina o ograniczeniach routingu, a ten artykuł zawiera konkretne przykłady ich zastosowania.





Poprzedni:Zero Foundation C# (wersja w pełnym kolorze) Technologia jutra
Następny:ASP.NET Core – Opis użycia importu w Razor View
 Ziemianin| Opublikowano 06.05.2019 09:32:15 |
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com