Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 16017|Yanıt: 1

[.NET Core] ASP.NET Core'da özel yönlendirme kısıtlamalarının uygulanması

[Bağlantıyı kopyala]
Yayınlandı 6.05.2019 09:30:30 | | |
Yönlendirme kısıtlamaları

ASP.NET Core, yönlendirme şablonları tanımlayarak URL'lerde değişkenler iletebilir ve değişkenler için varsayılanlar, isteğe bağlılar ve kısıtlamalar sağlayabilirsiniz.

Kısıtlama, belirtilen kısıtlama adının öznitelik yoluna eklenmesiyle kullanılır ve bu yol aşağıdaki şekilde kullanılır:

Çerçeve içinde bazı kısıtlamalar zaten sağlanmıştır, aşağıdaki gibidir:

Kısıtlamalar
örnek
Maç örnekleri
Göstermek
int
{id:int}
123456789, -123456789
Herhangi bir tam sayı eşleşti
bool
{active:bool}
doğru, YANLIŞ
Doğru veya yanlış eşleşme (küçük harf duyarlı)
Tarih saati
{dob:datetime}
2016-12-31, 2016-12-31 19:32
Geçerli DateTime değerleriyle eşleşiyor (sabit yerlilikte - uyarıya bakınız)
ondalık
{price:decimal}
49.99, -1,000.01
Geçerli ondalık değerleri eşleştiriyor (sabit yerellikte - uyarıya bakınız)
çift
{weight:double}
1.234, -1,001.01e8
Geçerli çift değerleri eşleştiriyor (sabit yerellikte - uyarıya bakınız)
Float
{weight:float}
1.234, -1,001.01e8
Geçerli float değerleriyle eşleşiyor (sabit yerellikte - uyarılara bakınız)
Rehber
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Geçerli GUID değerleriyle eşleşiyor
uzun
{ticks:long}
123456789, -123456789
Geçerli uzun değerleri eşleştirir
minlength(değer)
{kullanıcı adı:minlength(4)}
Rick
Dizinin en az 4 karakter olması gerekir
maxlength(değer)
{dosya adı:maxlength(8)}
Richard
Dizileri 8 karakteri aşmamalıdır
uzunluk (uzunluk)
{dosya adı:uzunluk(12)}
somefile.txt
Dizinin tam olarak 12 karakter olması gerekir
uzunluk(min,max)
{filename:length(8,16)}
somefile.txt
Dizinin en az 8 karakter ve en fazla 16 karakter olması gerekir
min(değer)
{age:min(18)}
19
Tam sayı değeri en az 18 olmalıdır
max(değer)
{age:max(120)}
91
Tam sayı değeri 120'yi geçmemelidir
menzil(min,max)
{yaş:aralık(18,120)}
91
Tam sayı en az 18 olmalı ve 120'yi aşmamalıdır
alfa
{name:alpha}
Rick
Dizide bir veya daha fazla alfabetik karakter (a-z, harf-duyarlı) oluşmalıdır.
regex(ifade)
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
Dizinin düzenli ifadeyle eşleşmesi gerekir (düzenli ifadeleri tanımlama ipuçlarına bakınız)
Gerekli
{ad:gerekli}
Rick
URL oluşturma sırasında parametrik olmayan değerlerin varlığını zorunlu kılmak için kullanılır


Yerleşik kısıtlamalar çoğu yaygın kullanım durumunda işe yarar, ancak bazen istediğimiz etkiyi özelleştirmemiz gerekir.
Özel yönlendirme kısıtlamaları

Özel bir kısıtlama, IRouteConstraint arayüzünü uygulamak ve ardından dört parametreye sahip Match yöntemini aşırı yüklemektir.

İlk parametre olan httpContext, mevcut talebin bağlamıdır

İkinci parametre olan güzergah ise mevcut kısıtlamanın ait olduğu güzergahtır

Üçüncü parametre olan routeKey, şu anda kontrol edilen değişkenin adıdır; örneğin makalenin başındaki örnekte id
Dördüncü parametre değerleri, mevcut URL'nin eşleştiği sözlük değeridir; örneğin makalenin başındaki örnek rotası gibi; URL users/1 ise, o zaman anahtar = id , değer = 1 olan bir sözlük vardır. Tabii ki, kontrolör, eylem gibi diğer değişkenler için de değerler var.

Beşinci parametre olan routeDirection, URL'nin web tarafından mı istendiğini yoksa Url.Action gibi bir yöntemle oluşturulup oluşturulmadığını gösteren sayılmış bir değerdir.

Örneğin, rotadan geçen parametrelerin belirtilen sayım değeri olması gerektiğini belirten bir kısıtlama tanımlamak istiyoruz.

Önce bir enum tanımlayalım:


Sonra kısıtlamaları tanımlayın:

Startup.cs'de ConfigureServices metoduna özel kısıtlamalar ekleyin:
Rotalar üzerindeki kısıtlamaların kullanılması:

(WebApplicationTest mevcut isim alanıdır)


{id:int:min(2)} rotası min(2) kullanmalı, aksi takdirde id = 0 veya id = 1 için çakışma olur.

Programı çalıştırın ve rotalar api/test/0, api/test/1, api/test/true ve api/test/false olduğunda özel kısıtlamalarımızı eşleştirin.

Eğer rota api/test/{tamsayı 2'den büyük} ise, ikinci rotayı eşleştirin.

Diğer vakalar üçüncü yola uyuyor.

son

Yönlendirme kısıtlamaları bazı durumlarda çok faydalı bir özelliktir; bu da kontrolcüdeki kontrol parametrelerini azaltabilir; kısmi parametre doğrulama fonksiyonu deklaratif attruibute kullanılarak uygulanabilir ve bazı tekrarlanan kontroller kamu kullanımı için kısıtlamalara çıkarılabilir.

Kısıtlama oluşturucusu enjekte edilebilir, bu yüzden çok genişletilebilir ve bazı parametre doğrulamaları veritabanını sorgulayarak yapılabilir.

Resmi web sitesi sadece kısa bir şekilde yönlendirme kısıtlamalarından bahsediyor ve bu makale yönlendirme kısıtlamalarının kullanımına özel örnekler sunmaktadır.





Önceki:Zero Foundation C# (Tam Renkli Versiyon) Tomorrow Technology
Önümüzdeki:ASP.NET Core – Razor View Import Usage Description
 Ev sahibi| Yayınlandı 6.05.2019 09:32:15 |
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com