Cara menambahkan parameter link ke pembantu tag asp di ASP.NET Core MVC


104

Saya memiliki banyak pengalaman dengan ASP.NET MVC 1-5 . Sekarang saya belajar ASP.NET Core MVC dan harus meneruskan parameter ke link di halaman. Misalnya saya memiliki Action berikut

 [HttpGet]
 public ActionResult GetProduct(string id)
 {
      ViewBag.CaseId = id;
      return View();
 }

Bagaimana cara menerapkan tautan untuk tindakan ini menggunakan pembantu tag?

<a asp-controller="Product" asp-action="GetProduct">ProductName</a>

Jawaban:


195

Anda dapat menggunakan awalan atribut asp-route-untuk mengawali nama variabel rute Anda.

Contoh:

<a asp-controller="Product" asp-action="GetProduct" asp-route-id="10"> ProductName</a>

2
Jika saya memiliki beberapa parameter, saya harus menambahkan semuanya dengan metode ini?
Elvin Mammadov

40
@ elvin-mammadov, ya, menggunakan asp-route-yourParamName, misalnya:asp-route-foo="bar"
Alex

2
@ElvinMammadov Komentar Anda asp-route-yourParamNametentang parameter input tambahan sangat membantu. Terima kasih.
nam

@ Alex Misalnya Anda akan menghasilkan html sebagai: <a href="https://stackoverflow.com/Product/GetProduct/10">ProductName</a>. Pertanyaan : Saat menggunakan pembantu tag anchor bagaimana kita bisa mendapatkan nilai parameter (misalnya 10) menggunakan jquery? `
nam

3
@nam Anda dapat menambahkan atribut data di sebelah pembantu ASP. <a asp-route-id="@item.Id" data-id="@item.Id" />dan kemudian dapatkan id dengan $('a').attr('data-id'):)
Steen Schütt

18

Anda mungkin ingin menerapkan sintaks berikut.

<a asp-controller="Member"
   asp-action="Edit"
   asp-route-level="3"
   asp-route-type="full"
   asp-route-id="12">Click me</a>

Itu akan menghasilkan rute panggilan seperti ini.

/ Anggota / Edit / 3 / penuh / 12

Kemudian Anda dapat menerimanya dengan metode seperti yang ditunjukkan di bawah ini.

[Route({level}/{type}/{id})]
public IActionResult Edit(int level, string type, int id) { ... }

Meskipun, atribut yang mendekorasi metode tidak diperlukan di MVC, ini menunjukkan dengan lebih jelas bagaimana mengikat atribut dari tautan ke parameter yang diteruskan dalam metode.


Bagi saya alih-alih /Member/Edit/3/full/12menghasilkan/Member/Edit/3?type=full&id=12
Arif

1
@Arif Tidak dapat mengatakan dengan pasti mengapa dan saya tidak berada di lingkungan C # saat ini (terlalu malas untuk memulai juga). Namun, saya menyarankan bahwa itu tergantung pada apakah kita secara eksplisit menyatakan [FromUrl] atau [FromQuery] dll, yang mungkin berbeda antara versi yang berbeda dari palatform .NET dan / atau bergantung pada kelas yang diwariskan untuk panggilan WebAPI murni (sebagai berlawanan dengan kelas untuk BaseController dengan tampilan dan semua itu). Sekadar guestimation, NB.
Konrad Viltersten

0

jika Anda ingin memasukkan id variabel ke dalam tautan di kisi atau tabel, sesuatu di bawah kode dapat digunakan

[HttpGet]
[Route("/Product/GetProduct/{id}")]
 public ActionResult GetProduct(string id)
 {
      ViewBag.CaseId = id;
      return View();
 }


 <a  asp-controller="Product" asp-action="GetProduct" asp-route-id="@item.id" >ProductName</a>

Bisakah Anda menjelaskan jawaban Anda? Jawaban kode-saja tanpa penjelasan cenderung mendapat suara negatif atau dihapus.
SS Anne
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.