Bagikan melalui


ASP.NET Gambaran Umum Pengontrol MVC (VB)

oleh Stephen Walther

Dalam tutorial ini, Stephen Walther memperkenalkan Anda ke pengontrol MVC ASP.NET. Anda mempelajari cara membuat pengontrol baru dan mengembalikan berbagai jenis hasil tindakan.

Tutorial ini mengeksplorasi topik ASP.NET pengontrol MVC, tindakan pengontrol, dan hasil tindakan. Setelah Anda menyelesaikan tutorial ini, Anda akan memahami bagaimana pengontrol digunakan untuk mengontrol cara pengunjung berinteraksi dengan situs web MVC ASP.NET.

Memahami Pengontrol

Pengontrol MVC bertanggung jawab untuk menanggapi permintaan yang dibuat terhadap situs web MVC ASP.NET. Setiap permintaan browser dipetakan ke pengontrol tertentu. Misalnya, bayangkan Anda memasukkan URL berikut ke bilah alamat browser Anda:

http://localhost/Product/Index/3

Dalam hal ini, pengontrol bernama ProductController dipanggil. ProductController bertanggung jawab untuk menghasilkan respons terhadap permintaan browser. Misalnya, pengontrol mungkin mengembalikan tampilan tertentu kembali ke browser atau pengontrol mungkin mengalihkan pengguna ke pengontrol lain.

Daftar 1 berisi pengontrol sederhana bernama ProductController.

Listing1 - Controllers\ProductController.vb

Public Class ProductController
    Inherits System.Web.Mvc.Controller

    '
    ' GET: /Products/

    Function Index()
        ' Add action logic here
        Return View()
    End Function

End Class

Seperti yang Anda lihat dari Daftar 1, pengontrol hanyalah kelas (kelas Visual Basic .NET atau C#). Pengontrol adalah kelas yang berasal dari kelas System.Web.Mvc.Controller dasar. Karena pengontrol mewarisi dari kelas dasar ini, pengontrol mewarisi beberapa metode yang berguna secara gratis (Kami membahas metode ini dalam sekejap).

Memahami Tindakan Pengontrol

Pengontrol mengekspos tindakan pengontrol. Tindakan adalah metode pada pengontrol yang dipanggil saat Anda memasukkan URL tertentu di bilah alamat browser Anda. Misalnya, bayangkan Anda membuat permintaan untuk URL berikut:

http://localhost/Product/Index/3

Dalam hal ini, metode Index() dipanggil pada kelas ProductController. Metode Index() adalah contoh tindakan pengontrol.

Tindakan pengontrol harus merupakan metode publik dari kelas pengontrol. Metode Basic.NET visual, secara default, adalah metode publik. Sadarilah bahwa metode publik apa pun yang Anda tambahkan ke kelas pengontrol diekspos sebagai tindakan pengontrol secara otomatis (Anda harus berhati-hati tentang ini karena tindakan pengontrol dapat dipanggil oleh siapa pun di alam semesta hanya dengan mengetikKAN URL yang tepat ke bilah alamat browser).

Ada beberapa persyaratan tambahan yang harus dipenuhi oleh tindakan pengontrol. Metode yang digunakan sebagai tindakan pengontrol tidak dapat kelebihan beban. Selain itu, tindakan pengontrol tidak dapat menjadi metode statis. Selain itu, Anda dapat menggunakan hampir semua metode sebagai tindakan pengontrol.

Memahami Hasil Tindakan

Tindakan pengontrol mengembalikan sesuatu yang disebut hasil tindakan. Hasil tindakan adalah apa yang dikembalikan tindakan pengontrol sebagai respons terhadap permintaan browser.

Kerangka kerja MVC ASP.NET mendukung beberapa jenis hasil tindakan termasuk:

  1. ViewResult - Mewakili HTML dan markup.
  2. EmptyResult - Tidak mewakili hasil.
  3. RedirectResult - Mewakili pengalihan ke URL baru.
  4. JsonResult - Mewakili hasil Notasi Objek JavaScript yang dapat digunakan dalam aplikasi AJAX.
  5. JavaScriptResult - Mewakili skrip JavaScript.
  6. ContentResult - Mewakili hasil teks.
  7. FileContentResult - Mewakili file yang dapat diunduh (dengan konten biner).
  8. FilePathResult - Mewakili file yang dapat diunduh (dengan jalur).
  9. FileStreamResult - Mewakili file yang dapat diunduh (dengan aliran file).

Semua tindakan ini menghasilkan pewarisan dari kelas ActionResult dasar.

Dalam kebanyakan kasus, tindakan pengontrol mengembalikan ViewResult. Misalnya, tindakan Pengontrol indeks di Daftar 2 mengembalikan ViewResult.

Daftar 2 - Controllers\BookController.vb

Public Class BookController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return View()
    End Function

End Class

Saat tindakan mengembalikan ViewResult, HTML dikembalikan ke browser. Metode Index() di Listing 2 mengembalikan tampilan bernama Index ke browser.

Perhatikan bahwa tindakan Index() di Listing 2 tidak mengembalikan ViewResult(). Sebagai gantinya, metode View() dari kelas dasar Pengontrol dipanggil. Biasanya, Anda tidak mengembalikan hasil tindakan secara langsung. Sebagai gantinya, Anda memanggil salah satu metode berikut dari kelas dasar Pengontrol:

  1. Tampilan - Mengembalikan hasil tindakan ViewResult.
  2. Pengalihan - Mengembalikan hasil tindakan RedirectResult.
  3. RedirectToAction - Mengembalikan hasil tindakan RedirectToRouteResult.
  4. RedirectToRoute - Mengembalikan hasil tindakan RedirectToRouteResult.
  5. Json - Mengembalikan hasil tindakan JsonResult.
  6. JavaScriptResult - Mengembalikan JavaScriptResult.
  7. Konten - Mengembalikan hasil tindakan ContentResult.
  8. File - Mengembalikan FileContentResult, FilePathResult, atau FileStreamResult tergantung pada parameter yang diteruskan ke metode .

Jadi, jika Anda ingin mengembalikan Tampilan ke browser, Anda memanggil metode View(). Jika Anda ingin mengalihkan pengguna dari satu tindakan pengontrol ke tindakan lain, Anda memanggil metode RedirectToAction(). Misalnya, tindakan Details() di Listing 3 menampilkan tampilan atau mengalihkan pengguna ke tindakan Index() tergantung pada apakah parameter Id memiliki nilai.

Daftar 3 - CustomerController.vb

Public Class CustomerController
    Inherits System.Web.Mvc.Controller

    Function Details(ByVal id As Integer?)
        If Not id.HasValue Then
            Return RedirectToAction("Index")
        End If

        Return View()
    End Function
    Function Index()
        Return View()
    End Function

End Class

Hasil tindakan ContentResult bersifat khusus. Anda dapat menggunakan hasil tindakan ContentResult untuk mengembalikan hasil tindakan sebagai teks biasa. Misalnya, metode Index() di Listing 4 mengembalikan pesan sebagai teks biasa dan bukan sebagai HTML.

Daftar 4 - Controllers\StatusController.vb

StatusController

System.Web.Mvc.Controller

Public Class StatusController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return Content("Hello World!")
    End Function

End Class

Saat tindakan StatusController.Index() dipanggil, tampilan tidak dikembalikan. Sebaliknya, teks mentah "Halo Dunia!" dikembalikan ke browser.

Jika tindakan pengontrol mengembalikan hasil yang bukan hasil tindakan - misalnya, tanggal atau bilangan bulat - maka hasilnya dibungkus dalam ContentResult secara otomatis. Misalnya, ketika tindakan Index() workController di Listing 5 dipanggil, tanggal dikembalikan sebagai ContentResult secara otomatis.

Daftar 5 - WorkController.vb

Public Class WorkController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return DateTime.Now
    End Function

End Class

Tindakan Index() di Listing 5 mengembalikan objek DateTime. Kerangka kerja MVC ASP.NET mengonversi objek DateTime menjadi string dan membungkus nilai DateTime dalam ContentResult secara otomatis. Browser menerima tanggal dan waktu sebagai teks biasa.

Ringkasan

Tujuan dari tutorial ini adalah untuk memperkenalkan Anda pada konsep ASP.NET pengontrol MVC, tindakan pengontrol, dan hasil tindakan pengontrol. Di bagian pertama, Anda mempelajari cara menambahkan pengontrol baru ke proyek MVC ASP.NET. Selanjutnya, Anda mempelajari bagaimana metode publik pengontrol diekspos ke alam semesta sebagai tindakan pengontrol. Terakhir, kita membahas berbagai jenis hasil tindakan yang dapat dikembalikan dari tindakan pengontrol. Secara khusus, kami membahas cara mengembalikan ViewResult, RedirectToActionResult, dan ContentResult dari tindakan pengontrol.