Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Stephen Walther
Dalam tutorial ini, Stephen Walther menunjukkan bagaimana Anda dapat mengontrol bagaimana permintaan browser cocok dengan rute dengan membuat batasan rute dengan ekspresi reguler.
Anda menggunakan batasan rute untuk membatasi permintaan browser yang cocok dengan rute tertentu. Anda dapat menggunakan ekspresi reguler untuk menentukan batasan rute.
Misalnya, bayangkan Anda telah menentukan rute di Listing 1 di file Global.asax Anda.
Daftar 1 - Global.asax.vb
routes.MapRoute( _
"Product", _
"Product/{productId}", _
New With {.controller = "Product", .action = "Details"} _
)
Daftar 1 berisi rute bernama Produk. Anda dapat menggunakan rute Produk untuk memetakan permintaan browser ke ProductController yang terkandung dalam Daftar 2.
Daftar 2 - Controllers\ProductController.vb
Public Class ProductController
Inherits System.Web.Mvc.Controller
Function Details(ByVal productId As Integer) As ActionResult
Return View()
End Function
End Class
Perhatikan bahwa tindakan Detail() yang diekspos oleh pengontrol Produk menerima satu parameter bernama productId. Parameter ini adalah parameter bilangan bulat.
Rute yang ditentukan dalam Daftar 1 akan cocok dengan salah satu URL berikut:
- /Produk/23
- /Produk/7
Sayangnya, rute juga akan cocok dengan URL berikut:
- /Product/bla
- /Product/apple
Karena tindakan Details() mengharapkan parameter bilangan bulat, membuat permintaan yang berisi sesuatu selain nilai bilangan bulat akan menyebabkan kesalahan. Misalnya, jika Anda mengetik URL /Product/apple ke browser Anda maka Anda akan mendapatkan halaman kesalahan di Gambar 1.
Gambar 01: Melihat halaman meledak (Klik untuk melihat gambar ukuran penuh)
Apa yang benar-benar ingin Anda lakukan hanya cocok dengan URL yang berisi productId bilangan bulat yang tepat. Anda dapat menggunakan batasan saat menentukan rute untuk membatasi URL yang cocok dengan rute. Rute Produk yang dimodifikasi di Daftar 3 berisi batasan ekspresi reguler yang hanya cocok dengan bilangan bulat.
Daftar 3 - Global.asax.vb
routes.MapRoute( _
"Product", _
"Product/{productId}", _
New With {.controller = "Product", .action = "Details"}, _
New With {.productId = "\d+"} _
)
Ekspresi reguler \d+ cocok dengan satu atau beberapa bilangan bulat. Batasan ini menyebabkan rute Produk cocok dengan URL berikut:
- /Produk/3
- /Produk/8999
Tetapi bukan URL berikut:
- /Product/apple
- /Produk
Permintaan browser ini akan ditangani oleh rute lain atau, jika tidak ada rute yang cocok, sumber daya tidak dapat ditemukan kesalahan akan dikembalikan.