Cara menyampaikan parameter ke kaedah tindakan di ASP.NET Core MVC

ASP.NET Core adalah kerangka rentas platform, sumber terbuka, ramping, pantas, dan modular untuk membina aplikasi web berprestasi tinggi. Terdapat beberapa cara di mana anda boleh meneruskan parameter ke kaedah tindakan dalam ASP.NET Core MVC. Anda dapat meneruskannya melalui URL, rentetan pertanyaan, tajuk permintaan, badan permintaan, atau bahkan formulir. Artikel ini membincangkan semua cara ini, dan menggambarkannya dengan contoh kod.

Untuk bekerja dengan contoh kod yang disediakan dalam artikel ini, anda harus memasang Visual Studio 2019 di sistem anda. Sekiranya anda belum mempunyai salinannya, anda boleh memuat turun Visual Studio 2019 di sini. 

Buat projek ASP.NET Core MVC di Visual Studio 2019

Pertama, mari buat projek Teras ASP.NET di Visual Studio 2019. Dengan andaian Visual Studio 2019 dipasang di sistem anda, ikuti langkah-langkah yang digariskan di bawah untuk membuat projek Teras ASP.NET baru di Visual Studio.

  1. Lancarkan ID Studio Visual.
  2. Klik pada "Buat projek baru."
  3. Di tetingkap "Buat projek baru", pilih "Aplikasi Web Inti ASP.NET" dari senarai templat yang dipaparkan.
  4. Klik Seterusnya.
  5. Di tetingkap "Konfigurasikan projek baru Anda", tentukan nama dan lokasi untuk projek baru.
  6. Secara pilihan, centang kotak "Tempatkan penyelesaian dan projek di direktori yang sama", bergantung pada pilihan anda.
  7. Klik Buat.
  8. Di tetingkap "Buat Aplikasi Web Teras ASP.NET Teras" yang ditunjukkan di sebelahnya, pilih .NET Core sebagai jangka masa dan ASP.NET Core 3.1 (atau lebih baru) dari senarai juntai bawah di bahagian atas.
  9. Pilih "Aplikasi Web (Model-View-Controller)" sebagai templat projek untuk membuat aplikasi ASP.NET Core MVC baru. 
  10. Pastikan bahawa kotak centang "Aktifkan Docker Support" dan "Configure for HTTPS" tidak dicentang kerana kami tidak akan menggunakan fitur tersebut di sini.
  11. Pastikan Pengesahan disetel ke "Tanpa Pengesahan" kerana kami juga tidak akan menggunakan pengesahan.
  12. Klik Buat.

Mengikuti langkah-langkah ini harus membuat projek ASP.NET Core MVC baru di Visual Studio 2019. Kami akan menggunakan projek ini di bahagian di bawah untuk menggambarkan pelbagai kaedah menyampaikan parameter ke kaedah tindakan dalam ASP.NET Core 3.1.

Buat kelas AuthorRepository di ASP.NET Core MVC

Dalam contoh ini kita akan menggunakan kelas repositori - kaedah tindakan dalam pengawal akan berinteraksi dengan kaedah kelas repositori untuk operasi CRUD. Kami pertama kali membuat kelas model bernama Author dengan sifat minimum demi kesederhanaan seperti yang ditunjukkan dalam coretan kod yang diberikan di bawah.

    Pengarang kelas awam

    {

        id int awam {dapatkan; menetapkan; }

        rentetan awam FirstName {get; menetapkan; }

        rentetan umum LastName {get; menetapkan; }

    }

Kelas AuthorRepository mengandungi kaedah untuk mengambil contoh kelas Pengarang dari senarai generik dan juga untuk menambah contoh kelas Pengarang ke senarai generik. Kaedah GetAuthors mengembalikan halaman data, nombor halaman diserahkan kepadanya sebagai argumen.

    PublicRepository kelas awam

    {

        Pengarang senarai = Senarai baru ()

        {

            Pengarang baru

            {

                Id = 1,

                FirstName = "Joydip",

                Nama Akhir = "Kanjilal"

            },

            Pengarang baru

            {

                Id = 2,

                Nama Depan = "Steve",

                Nama Akhir = "Smith"

            }

        };

        Pengarang awam GetAuthor (int id)

        {

            mengembalikan pengarang.FirstOrDefault (a => a.Id == id);

        }

        senarai awam GetAuthors (int pageNumber = 1)

        {

            int pageSize = 10;

            int skip = pageSize * (pageNumber - 1);

            jika (pengarang. Kira <pageSize)

                pageSize = author.Count;

            penulis kembali

              Langkau (langkau)

              . Ambil (ukuran halaman). Daftar ();

        }

        bool awam Simpan (Pengarang pengarang)

        {

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

            jika (hasil! = nol)

            {

                jika (hasil. Jumlah () == 0)

                {

                    pengarang. Tambah (pengarang);

                    kembali benar;

                }

            }

            kembali palsu;

        }

    }

Lulus parameter melalui URL di ASP.NET Core MVC

Salah satu kaedah termudah dan termudah untuk meneruskan parameter ke kaedah tindakan adalah meneruskannya melalui URL. Coretan kod berikut menggambarkan bagaimana anda dapat menyampaikan parameter dalam URL.

[HttpGet]

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

awamActionResult GetAuthor (int authorId)

{

   var data = authorRepository.GetAuthor (authorId);

   kembali Paparan (data);

}

URL ke titik akhir adalah:

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

Lulus parameter melalui rentetan pertanyaan dalam ASP.NET Core MVC

Melewatkan parameter dalam rentetan pertanyaan adalah pilihan lain. Ia tidak memerlukan perubahan maklumat penghalaan dan dengan itu serasi ke belakang Pertimbangkan potongan kod berikut yang menggambarkan bagaimana anda dapat meneruskan parameter melalui rentetan pertanyaan dalam kaedah tindakan.

[HttpGet]

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

awamActionResult GetAuthors ([FromQuery

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

{

   var data = authorRepository.GetAuthors (pageNumber);

   kembali Ok (data);

}

Berikut adalah URL untuk mengakses titik akhir ini:

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

Kaedah GetAuthors menerima nombor halaman sebagai argumen yang dihantar kepadanya melalui rentetan pertanyaan. Perhatikan bahawa pageNumber adalah parameter pilihan - jika tidak ada parameter yang diteruskan ke metode ini, maka nomor halaman akan ditafsirkan sebagai 1. Kaedah ini mengembalikan catatan penulis untuk halaman yang ditentukan. Dalam contoh kami, jika terdapat 100 catatan pengarang di penyimpanan data dan nombor halaman adalah 3, kaedah ini akan mengembalikan catatan 31 hingga 40. (Perhatikan bahawa jumlah pengarang setiap halaman dikodkan keras; ia dinyatakan sebagai 10 di Kelas Pengarang Pengarang.)

Lulus parameter melalui header permintaan di ASP.NET Core MVC

Header permintaan adalah pilihan lain untuk meneruskan parameter ke kaedah tindakan anda. Kes penggunaan biasa untuk ini adalah memberikan bukti kelayakan atau data rahsia lain melalui wayar. Coretan kod berikut menggambarkan kaedah tindakan yang menerima nombor kad kredit sebagai parameter dan kembali benar jika nombor kad kredit itu sah.

[HttpGet]

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

awam IActionResult IsCreditCardValid ([FromHeader] rentetan kreditCardNumber)

{

   rentetan 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, kaedah tindakan IsCreditCardValid mengesahkan kad kredit Visa, MasterCard, dan Amex sahaja. Anda boleh memperluaskan kaedah IsCreditCardValid untuk mengesahkan jenis kad lain. Oleh kerana nombor kad kredit harus dihantar dengan selamat, penggunaan header permintaan adalah pilihan yang baik di sini. Gambar 1 menunjukkan bagaimana anda dapat menentukan nombor kad kredit anda sebagai parameter melalui tajuk permintaan.

Lulus parameter melalui badan permintaan dalam ASP.NET Core MVC

Anda sering perlu melewati parameter melalui badan permintaan semasa anda melakukan operasi memasukkan atau mengemas kini. Coretan kod berikut menggambarkan bagaimana anda dapat menyampaikan contoh kelas Pengarang melalui badan permintaan.

[HttpPost]

[Laluan ("Lalai / Masukkan")]

awam IActionResult Insert ([FromBody] Pengarang pengarang)

{

   kembali Ok (authorRepository.Save (pengarang));

}

Gambar 2 menunjukkan bagaimana anda dapat menentukan data yang akan dimasukkan ke dalam badan permintaan.

Lengkapkan kod sumber kelas DefaultController kami

Kod lengkap kelas DefaultController disediakan di bawah untuk rujukan anda.

 kelas awam DefaultController: Controller

    {

        pembacaan peribadi AuthorRepository authorRepository =

        AuthorRepository baru ();

        [HttpGet]

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

        awamActionResult GetAuthor (int authorId)

        {

            var data = authorRepository.GetAuthor (authorId);

            kembali Ok (data);

        }

        [HttpGet]

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

        awamActionResult GetAuthors ([FromQuery

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

        {

            var data = authorRepository.GetAuthors (pageNumber);

            kembali Ok (data);

        }

        [HttpGet]

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

        awam IActionResult IsCreditCardValid

        ([FromHeader] rentetan kreditCardNumber)

        {

            rentetan 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]

        [Laluan ("Lalai / Masukkan")]

        awam IActionResult Insert ([FromBody] Pengarang pengarang)

        {

            kembali Ok (authorRepository.Save (pengarang));

        }

    }

Akhirnya, anda juga boleh melewati parameter melalui borang. Borang sering digunakan semasa anda ingin memuat naik fail. Anda perlu memanfaatkan antara muka IFormFile dalam kes ini. 

Cara melakukan lebih banyak perkara dalam ASP.NET Core:

  • Cara menggunakan Penganalisis API dalam ASP.NET Core
  • Cara menggunakan token data laluan di ASP.NET Core
  • Cara menggunakan versi API di ASP.NET Core
  • Cara menggunakan Objek Pemindahan Data dalam ASP.NET Core 3.1
  • Cara mengatasi ralat 404 dalam ASP.NET Core MVC
  • Cara menggunakan suntikan kebergantungan dalam penapis tindakan dalam ASP.NET Core 3.1
  • Cara menggunakan corak pilihan dalam ASP.NET Core
  • Cara menggunakan penghalaan titik akhir dalam ASP.NET Core 3.0 MVC
  • Cara mengeksport data ke Excel dalam ASP.NET Core 3.0
  • Cara menggunakan LoggerMessage dalam ASP.NET Core 3.0
  • Cara menghantar e-mel dalam ASP.NET Core
  • Cara log data ke SQL Server di ASP.NET Core
  • Cara menjadualkan pekerjaan menggunakan Quartz.NET di ASP.NET Core
  • Cara mengembalikan data dari ASP.NET Core Web API
  • Cara memformat data tindak balas dalam ASP.NET Core
  • Cara menggunakan API Web Teras ASP.NET menggunakan RestSharp
  • Cara melakukan operasi async menggunakan Dapper
  • Cara menggunakan bendera ciri dalam ASP.NET Core
  • Cara menggunakan atribut FromServices di ASP.NET Core
  • Cara bekerja dengan kuki di ASP.NET Core
  • Cara bekerja dengan fail statik di ASP.NET Core
  • Cara menggunakan Middleware Menulis Semula URL di ASP.NET Core
  • Cara melaksanakan pembatasan kadar di ASP.NET Core
  • Cara menggunakan Wawasan Aplikasi Azure di ASP.NET Core
  • Menggunakan ciri NLog canggih dalam ASP.NET Core
  • Cara menangani ralat dalam API Web ASP.NET
  • Cara melaksanakan pengendalian pengecualian global di ASP.NET Core MVC
  • Cara menangani nilai null di ASP.NET Core MVC
  • Versi lanjutan dalam ASP.NET Core Web API
  • Cara bekerja dengan perkhidmatan pekerja di ASP.NET Core
  • Cara menggunakan API Perlindungan Data di ASP.NET Core
  • Cara menggunakan middleware bersyarat dalam ASP.NET Core
  • Cara bekerja dengan keadaan sesi di ASP.NET Core
  • Cara menulis pengawal yang cekap dalam ASP.NET Core