Bagikan melalui


ASP.NET Gambaran Umum Pengontrol MVC (C#)

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.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace MvcApplication1.Controllers
{
    public class ProductController : Controller
    {
        //
        // GET: /Products/

        public ActionResult Index()
        {
            // Add action logic here
            return View();
        }
    }
}

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 C#, secara default, adalah metode privat. 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.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace MvcApplication1.Controllers
{
    public class BookController : Controller
    {
        public ActionResult Index()
        {
            // Add action logic here
            return View();
        }
    }
}

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.cs

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class CustomerController : Controller
    {
        public ActionResult Details(int? id)
        {
            if (!id.HasValue)
                return RedirectToAction("Index");

            return View();
        }

        public ActionResult Index()
        {
            return View();
        }

    }
}

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.cs

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class StatusController : Controller
    {
        public ActionResult Index()
        {
            return Content("Hello World!");
        }
    }
}

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.cs

using System;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class WorkController : Controller
    {
        public DateTime Index()
        {
            return DateTime.Now;
        }
    }
}

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.