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>
Elvin Mammadov
sumber

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>
Alex
sumber
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.

Konrad Viltersten
sumber
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>
Neeraj Singh Chouhan
sumber
Bisakah Anda menjelaskan jawaban Anda? Jawaban kode-saja tanpa penjelasan cenderung mendapat suara negatif atau dihapus.
SS Anne