Cara meneruskan parameter ke metode tindakan di ASP.NET Core MVC

ASP.NET Core adalah kerangka kerja lintas platform, sumber terbuka, ramping, cepat, dan modular untuk membangun aplikasi web berkinerja tinggi. Ada sejumlah cara untuk mengirimkan parameter ke metode tindakan di ASP.NET Core MVC. Anda dapat meneruskannya melalui URL, string kueri, header permintaan, isi permintaan, atau bahkan formulir. Artikel ini membahas semua cara ini, dan menggambarkannya dengan contoh kode.

Untuk bekerja dengan contoh kode yang disediakan dalam artikel ini, Anda harus menginstal Visual Studio 2019 di sistem Anda. Jika Anda belum memiliki salinannya, Anda dapat mengunduh Visual Studio 2019 di sini. 

Buat proyek ASP.NET Core MVC di Visual Studio 2019

Pertama, mari buat proyek ASP.NET Core di Visual Studio 2019. Dengan asumsi Visual Studio 2019 diinstal di sistem Anda, ikuti langkah-langkah yang diuraikan di bawah ini untuk membuat proyek ASP.NET Core baru di Visual Studio.

  1. Luncurkan Visual Studio IDE.
  2. Klik "Buat proyek baru".
  3. Di jendela "Buat proyek baru", pilih "Aplikasi Web Inti ASP.NET" dari daftar templat yang ditampilkan.
  4. Klik Next.
  5. Di jendela "Configure your new project", tentukan nama dan lokasi untuk proyek baru tersebut.
  6. Secara opsional, centang kotak "Tempatkan solusi dan proyek dalam direktori yang sama", bergantung pada preferensi Anda.
  7. Klik Buat.
  8. Di jendela "Buat Aplikasi Web ASP.NET Core Baru" yang ditampilkan berikutnya, pilih .NET Core sebagai runtime dan ASP.NET Core 3.1 (atau yang lebih baru) dari daftar drop-down di bagian atas.
  9. Pilih "Aplikasi Web (Model-View-Controller)" sebagai template proyek untuk membuat aplikasi ASP.NET Core MVC baru. 
  10. Pastikan kotak centang "Aktifkan Dukungan Docker" dan "Konfigurasi untuk HTTPS" tidak dicentang karena kami tidak akan menggunakan fitur tersebut di sini.
  11. Pastikan Autentikasi disetel ke "Tanpa Autentikasi" karena kami juga tidak akan menggunakan autentikasi.
  12. Klik Buat.

Mengikuti langkah-langkah ini akan membuat proyek ASP.NET Core MVC baru di Visual Studio 2019. Kami akan menggunakan proyek ini di bagian di bawah ini untuk mengilustrasikan berbagai metode meneruskan parameter ke metode tindakan di ASP.NET Core 3.1.

Buat kelas AuthorRepository di ASP.NET Core MVC

Dalam contoh ini kita akan menggunakan kelas repositori - metode tindakan di pengontrol akan berinteraksi dengan metode kelas repositori untuk operasi CRUD. Pertama-tama kita akan membuat kelas model bernama Penulis dengan properti minimal demi kesederhanaan seperti yang ditunjukkan dalam potongan kode yang diberikan di bawah ini.

    kelas publik Penulis

    {

        public int Id {get; set; }

        string publik FirstName {get; set; }

        string publik LastName {get; set; }

    }

Kelas AuthorRepository berisi metode untuk mengambil instance kelas Author dari daftar generik serta untuk menambahkan instance baru dari kelas Author ke daftar generik. Metode GetAuthors mengembalikan halaman data, nomor halaman yang diteruskan sebagai argumen.

    kelas publik AuthorRepository

    {

        Penulis daftar = Daftar baru ()

        {

            Penulis baru

            {

                Id = 1,

                FirstName = "Joydip",

                LastName = "Kanjilal"

            },

            Penulis baru

            {

                Id = 2,

                FirstName = "Steve",

                LastName = "Smith"

            }

        };

        publik Penulis GetAuthor (int id)

        {

            kembalikan penulis.FirstOrDefault (a => a.Id == id);

        }

        GetAuthors Daftar publik (int pageNumber = 1)

        {

            int pageSize = 10;

            int lewati = pageSize * (pageNumber - 1);

            if (author.Count <pageSize)

                pageSize = penulis.Count;

            penulis kembali

              .Lewati (lewati)

              .Take (pageSize) .ToList ();

        }

        public bool Save (Penulis penulis)

        {

            var result = author.Where (a => a.Id == author.Id);

            if (result! = null)

            {

                jika (result.Count () == 0)

                {

                    penulis.Tambahkan (penulis);

                    kembali benar;

                }

            }

            return false;

        }

    }

Meneruskan parameter melalui URL di ASP.NET Core MVC

Salah satu cara termudah dan termudah untuk meneruskan parameter ke metode tindakan adalah meneruskannya melalui URL. Cuplikan kode berikut mengilustrasikan bagaimana Anda dapat mengirimkan parameter di URL.

[HttpGet]

[Rute ("Default / GetAuthor / {authorId: int}")]

publik IActionResult GetAuthor (int authorId)

{

   var data = authorRepository.GetAuthor (authorId);

   return View (data);

}

URL ke titik akhir adalah:

DAPATKAN: // localhost: 8061 / Default / GetAuthor / 1

Meneruskan parameter melalui string kueri di ASP.NET Core MVC

Meneruskan parameter dalam string kueri adalah opsi lain. Tidak perlu mengubah informasi perutean dan karenanya kompatibel ke belakang. Pertimbangkan cuplikan kode berikut yang menggambarkan bagaimana Anda dapat meneruskan parameter melalui string kueri dalam metode tindakan.

[HttpGet]

[Rute ("Default / GetAuthors / {pageNumber: int}")]

publik IActionResult GetAuthors ([FromQuery

(Name = "pageNumber")] int pageNumber = 1)

{

   var data = authorRepository.GetAuthors (pageNumber);

   return Ok (data);

}

Berikut adalah URL untuk mengakses titik akhir ini:

GET: // localhost: 8061 / Default / GetAuthors? PageNumber = 1

Metode GetAuthors menerima nomor halaman sebagai argumen yang dikirim melalui string kueri. Perhatikan bahwa pageNumber adalah parameter opsional - jika tidak ada parameter yang diteruskan ke metode ini, maka nomor halaman akan diartikan sebagai 1. Metode mengembalikan catatan penulis untuk halaman yang ditentukan. Dalam contoh kami, jika ada 100 catatan penulis di penyimpanan data dan nomor halaman adalah 3, metode ini akan mengembalikan catatan 31 sampai 40. (Perhatikan bahwa jumlah penulis per halaman adalah hard code; ditentukan sebagai 10 di AuthorRepository.)

Meneruskan parameter melalui header permintaan di ASP.NET Core MVC

Header permintaan adalah opsi lain untuk meneruskan parameter ke metode tindakan Anda. Kasus penggunaan umum untuk ini adalah meneruskan kredensial atau data rahasia lainnya melalui kabel. Cuplikan kode berikut menggambarkan metode tindakan yang menerima nomor kartu kredit sebagai parameter dan mengembalikan true jika nomor kartu kredit valid.

[HttpGet]

[Rute ("Default / IsCreditCardValid / {creditCardNumber}")]

public IActionResult IsCreditCardValid (string creditCardNumber [FromHeader])

{

   string regexExpression =

   "^ (? :(? 4 [0-9] {12} (?: [0-9] {3})?) |" +

   "(? 5 [1-5] [0-9] {14}) |" +

   "(? 3 [47] [0-9] {13}) |) $";

   Regex regex = Regex baru (regexExpression);

   var match = regex.Match (creditCardNumber);

   kembali Ok (match.Success);

}

Demi kesederhanaan, metode tindakan IsCreditCardValid hanya memvalidasi kartu kredit Visa, MasterCard, dan Amex. Anda dapat memperluas metode IsCreditCardValid untuk memvalidasi jenis kartu lainnya. Karena nomor kartu kredit harus dikirimkan dengan aman, menggunakan tajuk permintaan adalah pilihan yang baik di sini. Gambar 1 menunjukkan bagaimana Anda dapat menentukan nomor kartu kredit Anda sebagai parameter melalui header permintaan.

Meneruskan parameter melalui tubuh permintaan di ASP.NET Core MVC

Anda akan sering kali perlu meneruskan parameter melalui isi permintaan saat Anda melakukan operasi penyisipan atau pembaruan. Cuplikan kode berikut mengilustrasikan bagaimana Anda dapat meneruskan instance kelas Author melalui isi permintaan.

[HttpPost]

[Rute ("Default / Sisipkan")]

Sisipan IActionResult publik ([FromBody] Penulis penulis)

{

   kembali Ok (authorRepository.Save (author));

}

Gambar 2 menunjukkan bagaimana Anda dapat menentukan data yang akan dimasukkan ke dalam isi permintaan.

Kode sumber lengkap dari kelas DefaultController kami

Kode lengkap dari kelas DefaultController disediakan di bawah ini untuk referensi Anda.

 kelas publik DefaultController: Controller

    {

        pribadi hanya baca AuthorRepository authorRepository =

        AuthorRepository () baru;

        [HttpGet]

        [Rute ("Default / GetAuthor / {authorId: int}")]

        publik IActionResult GetAuthor (int authorId)

        {

            var data = authorRepository.GetAuthor (authorId);

            return Ok (data);

        }

        [HttpGet]

        [Rute ("Default / GetAuthors / {pageNumber: int}")]

        publik IActionResult GetAuthors ([FromQuery

        (Name = "pageNumber")] int pageNumber = 1)

        {

            var data = authorRepository.GetAuthors (pageNumber);

            return Ok (data);

        }

        [HttpGet]

        [Rute ("Default / IsCreditCardValid / {creditCardNumber}")]

        public IActionResult IsCreditCardValid

        ([FromHeader] string creditCardNumber)

        {

            string regexExpression =

            "^ (? :(? 4 [0-9] {12} (?: [0-9] {3})?) |" +

            "(? 5 [1-5] [0-9] {14}) |" +

            "(? 3 [47] [0-9] {13}) |) $";

            Regex regex = Regex baru (regexExpression);

            var match = regex.Match (creditCardNumber);

            kembali Ok (match.Success);

        }

        [HttpPost]

        [Rute ("Default / Sisipkan")]

        Sisipan IActionResult publik ([FromBody] Penulis penulis)

        {

            kembali Ok (authorRepository.Save (author));

        }

    }

Terakhir, Anda juga dapat meneruskan parameter melalui formulir. Formulir sering digunakan saat Anda ingin mengunggah file. Anda perlu memanfaatkan antarmuka IFormFile dalam kasus ini. 

Cara melakukan lebih banyak di ASP.NET Core:

  • Cara menggunakan Penganalisis API di ASP.NET Core
  • Cara menggunakan token data rute di ASP.NET Core
  • Cara menggunakan versi API di ASP.NET Core
  • Cara menggunakan Objek Transfer Data di ASP.NET Core 3.1
  • Cara menangani kesalahan 404 di ASP.NET Core MVC
  • Cara menggunakan injeksi ketergantungan dalam tindakan filter di ASP.NET Core 3.1
  • Cara menggunakan pola opsi di ASP.NET Core
  • Cara menggunakan perutean titik akhir di ASP.NET Core 3.0 MVC
  • Cara mengekspor data ke Excel di ASP.NET Core 3.0
  • Cara menggunakan LoggerMessage di ASP.NET Core 3.0
  • Cara mengirim email di ASP.NET Core
  • Cara memasukkan data ke SQL Server di ASP.NET Core
  • Cara menjadwalkan pekerjaan menggunakan Quartz.NET di ASP.NET Core
  • Cara mengembalikan data dari ASP.NET Core Web API
  • Cara memformat data respons di ASP.NET Core
  • Cara menggunakan ASP.NET Core Web API menggunakan RestSharp
  • Cara melakukan operasi asinkron menggunakan Dapper
  • Cara menggunakan tanda fitur di ASP.NET Core
  • Cara menggunakan atribut FromServices di ASP.NET Core
  • Cara bekerja dengan cookie di ASP.NET Core
  • Cara bekerja dengan file statis di ASP.NET Core
  • Cara menggunakan URL Rewriting Middleware di ASP.NET Core
  • Cara menerapkan pembatasan laju di ASP.NET Core
  • Cara menggunakan Azure Application Insights di ASP.NET Core
  • Menggunakan fitur NLog lanjutan di ASP.NET Core
  • Bagaimana menangani kesalahan di ASP.NET Web API
  • Bagaimana menerapkan penanganan pengecualian global di ASP.NET Core MVC
  • Bagaimana menangani nilai null di ASP.NET Core MVC
  • Versi lanjutan dalam ASP.NET Core Web API
  • Cara bekerja dengan layanan pekerja di ASP.NET Core
  • Cara menggunakan API Perlindungan Data di ASP.NET Core
  • Cara menggunakan middleware bersyarat di ASP.NET Core
  • Cara bekerja dengan status sesi di ASP.NET Core
  • Cara menulis pengontrol yang efisien di ASP.NET Core