Bagaimana saya bisa meneruskan beberapa parameter untuk mendapatkan metode dalam pengontrol MVC 6. Misalnya saya ingin bisa memiliki sesuatu seperti berikut ini.
[Route("api/[controller]")]
public class PersonController : Controller
{
public string Get(int id)
{
}
public string Get(string firstName, string lastName)
{
}
public string Get(string firstName, string lastName, string address)
{
}
}
Jadi saya bisa menanyakan seperti.
api/person?id=1
api/person?firstName=john&lastName=doe
api/person?firstName=john&lastName=doe&address=streetA
c#
asp.net-core
asp.net-core-routing
mstrand.dll
sumber
sumber
Mengapa tidak menggunakan hanya satu tindakan pengontrol?
Opsi lainnya adalah menggunakan perutean atribut, tetapi Anda harus memiliki format URL yang berbeda:
sumber
Untuk mengurai parameter pencarian dari URL, Anda perlu memberi anotasi parameter metode pengontrol dengan
[FromQuery]
, misalnya:sumber
[HttpGet]
penjelasan tambahan , nama metode yang berbeda, dan rute spesifik di[Route]
- rute harus sepenuhnya eksplisit sekarang yang menghilangkan beberapa kemungkinan masalah.Menurut saya cara termudah adalah dengan menggunakan
AttributeRouting
.sumber
int paramOne, string paramTwo
Saya akan menyarankan untuk menggunakan objek dto terpisah sebagai argumen:
Dotnet akan memetakan bidang ke objek Anda.
Ini akan membuatnya lebih mudah untuk melewati parameter Anda dan akan menghasilkan kode yang lebih jelas.
sumber
Untuk memanggil get dengan beberapa parameter di inti api web
sumber
Untuk menambahkan beberapa detail lebih lanjut tentang kelebihan beban yang Anda tanyakan dalam komentar Anda setelah jawaban lain, berikut adalah ringkasannya. Komentar di
ApiController
acara mana yang akan dipanggil dengan setiapGET
kueri:Anda hanya memerlukan satu rute untuk ini, jika Anda bertanya-tanya:
dan Anda bisa menguji semuanya dengan tampilan MVC ini, atau sesuatu yang serupa. Ya, saya tahu Anda tidak seharusnya mencampur JavaScript dengan markup dan saya tidak menggunakan bootstrap seperti biasanya, tetapi ini hanya untuk tujuan demo.
sumber
NB-Saya menghapus FromURI. Masih saya bisa meneruskan nilai dari URL dan mendapatkan hasil. Jika ada yang tahu manfaat menggunakan fromuri beri tahu saya
sumber
Anda cukup melakukan hal berikut:
Jika Anda perlu mengakses setiap elemen secara terpisah, cukup lihat
Request.Query
.sumber
Caranya harus seperti ini:
Perhatikan bahwa metode kedua mengembalikan array objek dan nama pengontrol dalam bentuk jamak (Persons not Person).
Jadi jika Anda ingin mendapatkan sumber daya dengan id itu akan menjadi:
jika Anda ingin mengambil objek dengan beberapa kriteria pencarian seperti nama depan dan lain-lain, Anda dapat melakukan pencarian seperti ini:
Dan bergerak maju jika Anda ingin menerima pesanan orang itu (misalnya), akan seperti ini:
Dan metode dalam pengontrol yang sama:
sumber
sumber
Cara termudah,
Pengontrol:
Permintaan Tukang Pos:
Poin pembelajaran: Permintaan pola yang tepat akan diterima oleh Controller.
sumber