Bagikan melalui


Membuat Batasan Rute (VB)

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.

Kotak dialog Proyek Baru

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.