Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 16017|Jawab: 1

[Inti .NET] ASP.NET Implementasi batasan perutean kustom di Core

[Salin tautan]
Diposting pada 06/05/2019 09.30.30 | | |
Batasan perutean

ASP.NET Inti, Anda dapat meneruskan variabel pada URL dengan menentukan templat perutean, dan Anda dapat memberikan default, opsional, dan batasan untuk variabel.

Batasan digunakan dengan menambahkan nama batasan yang ditentukan ke rute atribut, yang digunakan sebagai berikut:

Beberapa kendala sudah disediakan di dalam kerangka kerja, sebagai berikut:

Kendala
contoh
Contoh kecocokan
Menggambarkan
int
{id:int}
123456789, -123456789
Cocokkan bilangan bulat apa pun
bool
{aktif:bool}
benar, SALAH
Mencocokkan benar atau salah (peka huruf besar/kecil)
tanggalwaktu
{dob:tanggalwaktu}
2016-12-31, 2016-12-31 19:32
Mencocokkan nilai DateTime yang valid (di lokalitas tetap - lihat peringatan)
desimal
{harga:desimal}
49.99, -1,000.01
Mencocokkan nilai desimal yang valid (di lokalitas tetap - lihat peringatan)
ganda
{berat: ganda}
1.234, -1.001.01e8
Mencocokkan nilai ganda yang valid (di lokalitas tetap - lihat peringatan)
mengapung
{berat: mengambang}
1.234, -1.001.01e8
Mencocokkan nilai float yang valid (di lokalitas tetap - lihat peringatan)
PANDUAN
{id:guid}
CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638}
Cocok dengan nilai GUID yang valid
panjang
{centang:panjang}
123456789, -123456789
Cocok dengan nilai long yang valid
minlength(nilai)
{nama pengguna:minlength(4)}
Rick
String harus minimal 4 karakter
maxlength(nilai)
{nama file:maxlength(8)}
Richard
String tidak boleh melebihi 8 karakter
panjang (panjang)
{nama file:panjang(12)}
somefile.txt
String harus tepat 12 karakter
panjang (min, maks)
{nama file:panjang(8,16)}
somefile.txt
String harus setidaknya 8 karakter dan tidak lebih dari 16 karakter
min(nilai)
{usia:min(18)}
19
Nilai bilangan bulat harus minimal 18
maks(nilai)
{usia:maks(120)}
91
Nilai bilangan bulat tidak boleh melebihi 120
rentang (min, maks)
{usia:rentang (18,120)}
91
Nilai bilangan bulat harus minimal 18 dan tidak melebihi 120
alfa
{nama:alfa}
Rick
String harus terdiri dari satu atau beberapa karakter alfabet (a-z, peka huruf besar/kecil).
regex(ekspresi)
{ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)}
123-45-6789
String harus cocok dengan ekspresi reguler (lihat tips untuk menentukan ekspresi reguler)
Diperlukan
{nama:wajib}
Rick
Digunakan untuk menerapkan keberadaan nilai non-parametrik selama pembuatan URL


Batasan bawaan berfungsi untuk sebagian besar kasus penggunaan umum, tetapi terkadang kita masih perlu menyesuaikan efek yang kita inginkan.
Batasan perutean kustom

Batasan kustom adalah mengimplementasikan antarmuka IRouteConstraint dan kemudian membebani metode Match, yang memiliki empat parameter.

Parameter pertama, httpContext, adalah konteks permintaan saat ini

Parameter kedua, rute, adalah rute tempat batasan saat ini berada

Parameter ketiga, routeKey, adalah nama variabel yang saat ini diperiksa, seperti id dalam contoh di awal artikel
Nilai parameter keempat adalah nilai kamus yang cocok dengan URL saat ini, seperti rute contoh di awal artikel, jika URL-nya adalah users/1, maka ada kamus dengan kunci = id , nilai = 1. Tentu saja, ada juga nilai untuk variabel lain, seperti pengontrol, tindakan, dll.

Parameter kelima, routeDirection, adalah nilai yang dihitung yang mewakili apakah URL diminta oleh web atau dihasilkan oleh metode seperti Url.Action.

Misalnya, kita ingin menentukan batasan yang menentukan bahwa parameter yang dilewatkan oleh rute harus berupa nilai pencacahan yang ditentukan.

Mari kita definisikan enum terlebih dahulu:


Kemudian tentukan batasan:

Tambahkan batasan kustom ke metode ConfigureServices di Startup.cs:
Menggunakan batasan pada rute:

(WebApplicationTest adalah namespace saat ini)


{id:int:min(2)} harus menggunakan min(2), jika tidak, akan ada konflik untuk id = 0 atau id = 1.

Jalankan program dan cocokkan batasan kustom kami saat rute adalah api/test/0, api/test/1, api/test/true, dan api/test/false.

Jika rute adalah api/test/{integer lebih besar dari 2}, cocokkan rute kedua.

Kasus lain cocok dengan rute ketiga.

kesimpulan

Batasan perutean adalah fitur yang sangat berguna dalam beberapa skenario, yang dapat mengurangi parameter pemeriksaan di pengontrol, dan fungsi validasi parameter parsial dapat diimplementasikan menggunakan attruibute deklaratif, dan beberapa pemeriksaan duplikat dapat diekstraksi menjadi batasan untuk penggunaan publik.

Konstruktor batasan dapat disuntikkan, sehingga dapat sangat diperluas, dan beberapa verifikasi parameter dapat dilakukan dengan mengkueri database.

Situs web resmi hanya secara singkat menyebutkan batasan perutean, dan artikel ini memberikan contoh spesifik tentang penggunaan batasan perutean.





Mantan:Zero Foundation C# (Versi Penuh Warna) Teknologi Tomorrow
Depan:ASP.NET Core – Deskripsi Penggunaan Impor Razor View
 Tuan tanah| Diposting pada 06/05/2019 09.32.15 |
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com