Bagikan melalui


ASP.NET Gambaran Umum Perutean MVC (VB)

oleh Stephen Walther

Dalam tutorial ini, Stephen Walther menunjukkan bagaimana kerangka kerja MVC ASP.NET memetakan permintaan browser ke tindakan pengontrol.

Dalam tutorial ini, Anda diperkenalkan dengan fitur penting dari setiap aplikasi MVC ASP.NET yang disebut perutean ASP.NET. Modul perutean ASP.NET bertanggung jawab untuk memetakan permintaan browser masuk ke tindakan pengontrol MVC tertentu. Pada akhir tutorial ini, Anda akan memahami bagaimana tabel rute standar memetakan permintaan ke tindakan pengontrol.

Menggunakan Tabel Rute Default

Saat Anda membuat aplikasi MVC ASP.NET baru, aplikasi sudah dikonfigurasi untuk menggunakan perutean ASP.NET. ASP.NET Perutean disiapkan di dua tempat.

Pertama, perutean ASP.NET diaktifkan dalam file konfigurasi Web aplikasi Anda (file Web.config). Ada empat bagian dalam file konfigurasi yang relevan dengan perutean: bagian system.web.httpModules, bagian system.web.httpHandlers, bagian system.webserver.modules, dan bagian system.webserver.handlers. Berhati-hatilah untuk tidak menghapus bagian ini karena tanpa perutean bagian ini tidak akan berfungsi lagi.

Kedua, dan yang lebih penting, tabel rute dibuat dalam file Global.asax aplikasi. File Global.asax adalah file khusus yang berisi penanganan aktivitas untuk peristiwa siklus hidup aplikasi ASP.NET. Tabel rute dibuat selama peristiwa Mulai Aplikasi.

File di Listing 1 berisi file Global.asax default untuk aplikasi MVC ASP.NET.

Daftar 1 - Global.asax.vb

' Note: For instructions on enabling IIS6 or IIS7 classic mode, 
' visit https://go.microsoft.com/?LinkId=9394802

Public Class MvcApplication
    Inherits System.Web.HttpApplication

    Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

        ' MapRoute takes the following parameters, in order:
        ' (1) Route name
        ' (2) URL with parameters
        ' (3) Parameter defaults
        routes.MapRoute( _
            "Default", _
            "{controller}/{action}/{id}", _
            New With {.controller = "Home", .action = "Index", .id = ""} _
        )

    End Sub

    Sub Application_Start()
        RegisterRoutes(RouteTable.Routes)
    End Sub
End Class

Ketika aplikasi MVC pertama kali dimulai, metode Application_Start() dipanggil. Metode ini, pada gilirannya, memanggil metode RegisterRoutes(). Metode RegisterRoutes() membuat tabel rute.

Tabel rute default berisi satu rute (bernama Default). Rute Default memetakan segmen pertama URL ke nama pengontrol, segmen kedua URL ke tindakan pengontrol, dan segmen ketiga ke parameter bernama id.

Bayangkan Anda memasukkan URL berikut ke bilah alamat browser web Anda:

/Home/Index/3

Rute default memetakan URL ini ke parameter berikut:

  • controller = Home

  • action = Index

  • id = 3

Saat Anda meminta URL /Home/Index/3, kode berikut dijalankan:

HomeController.Index(3)

Rute Default mencakup default untuk ketiga parameter. Jika Anda tidak menyediakan pengontrol, parameter pengontrol default ke nilai Beranda. Jika Anda tidak menyediakan tindakan, parameter tindakan default ke nilai Indeks. Terakhir, jika Anda tidak memberikan id, parameter id default ke string kosong.

Mari kita lihat beberapa contoh bagaimana RUTE default memetakan URL ke tindakan pengontrol. Bayangkan Anda memasukkan URL berikut ke bilah alamat browser Anda:

/Rumah

Karena default parameter rute default, memasukkan URL ini akan menyebabkan metode Index() dari kelas HomeController di Listing 2 dipanggil.

Daftar 2 - HomeController.vb

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index(ByVal id As String)
        Return View()
    End Function

End Class

Dalam Daftar 2, kelas HomeController menyertakan metode bernama Index() yang menerima satu parameter bernama Id. URL /Home menyebabkan metode Index() dipanggil dengan nilai Tidak Ada sebagai nilai parameter Id.

Karena cara kerangka kerja MVC memanggil tindakan pengontrol, URL /Home juga cocok dengan metode Index() dari kelas HomeController di Listing 3.

Daftar 3 - HomeController.vb (Tindakan indeks tanpa parameter)

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return View()
    End Function

End Class

Metode Index() di Listing 3 tidak menerima parameter apa pun. URL /Home akan menyebabkan metode Index() ini dipanggil. URL /Home/Index/3 juga memanggil metode ini (Id diabaikan).

URL /Home juga cocok dengan metode Index() dari kelas HomeController di Listing 4.

Daftar 4 - HomeController.vb (Tindakan indeks dengan parameter nullable)

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index(ByVal id? As Integer)
        Return View()
    End Function

End Class

Dalam Daftar 4, metode Index() memiliki satu parameter Bilangan Bulat. Karena parameter adalah parameter nullable (dapat memiliki nilai Tidak Ada), Index() dapat dipanggil tanpa menimbulkan kesalahan.

Terakhir, memanggil metode Index() di Listing 5 dengan URL /Home menyebabkan pengecualian karena parameter Id bukan parameter nullable. Jika Anda mencoba memanggil metode Index() maka Anda mendapatkan kesalahan yang ditampilkan di Gambar 1.

Daftar 5 - HomeController.vb (Tindakan indeks dengan parameter Id)

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index(ByVal id As Integer)
        Return View()
    End Function

End Class

Memanggil tindakan pengontrol yang mengharapkan nilai parameter

Gambar 01: Memanggil tindakan pengontrol yang mengharapkan nilai parameter (Klik untuk melihat gambar ukuran penuh)

URL /Home/Index/3, di sisi lain, berfungsi dengan baik dengan tindakan Pengontrol indeks di Listing 5. Permintaan /Home/Index/3 menyebabkan metode Index() dipanggil dengan parameter Id yang memiliki nilai 3.

Ringkasan

Tujuan dari tutorial ini adalah untuk memberi Anda pengantar singkat tentang Perutean ASP.NET. Kami memeriksa tabel rute default yang Anda dapatkan dengan aplikasi MVC ASP.NET baru. Anda mempelajari bagaimana URL peta rute default ke tindakan pengontrol.