วิธีเพิ่มพารามิเตอร์ลิงค์ไปยังตัวช่วยแท็ก asp ใน ASP.NET Core MVC


105

ฉันมีจำนวนมากประสบการณ์กับASP.NET MVC 1-5 ตอนนี้ฉันเรียนรู้ASP.NET Core MVCและต้องส่งพารามิเตอร์เพื่อเชื่อมโยงในหน้า ตัวอย่างเช่นฉันมีการดำเนินการต่อไปนี้

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

ฉันจะใช้ลิงก์สำหรับการดำเนินการนี้โดยใช้ตัวช่วยแท็กได้อย่างไร

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

คำตอบ:


196

คุณสามารถใช้คำนำหน้าแอตทริบิวต์asp-route-เพื่อนำหน้าชื่อตัวแปรเส้นทางของคุณ

ตัวอย่าง:

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

2
ถ้าฉันมีหลายพารามิเตอร์ฉันต้องเพิ่มทุกอย่างด้วยวิธีนี้?
Elvin Mammadov

40
@ elvin-mammadov ใช่ใช้asp-route-yourParamNameตัวอย่าง:asp-route-foo="bar"
Alex

2
@ElvinMammadov ความคิดเห็นของคุณasp-route-yourParamNameเกี่ยวกับพารามิเตอร์การป้อนข้อมูลเพิ่มเติมมีประโยชน์มาก ขอบคุณ.
น้ำ

@ Alex ตัวอย่างของคุณจะสร้าง HTML <a href="https://stackoverflow.com/Product/GetProduct/10">ProductName</a>เป็น: คำถาม : ในขณะที่ใช้ anchor tag helper เราจะรับค่าพารามิเตอร์ (เช่น 10) โดยใช้ได้jqueryอย่างไร? `
น้ำ

3
@nam คุณสามารถเพิ่มแอตทริบิวต์ข้อมูลถัดจากตัวช่วย ASP <a asp-route-id="@item.Id" data-id="@item.Id" />แล้วรับรหัสด้วย$('a').attr('data-id'):)
Steen Schütt

18

คุณอาจต้องการใช้ไวยากรณ์ต่อไปนี้

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

ที่จะสร้างเส้นทางการโทรเช่นนี้

/ สมาชิก / แก้ไข / 3 / เต็ม / 12

จากนั้นคุณสามารถรับได้ตามวิธีการที่แสดงด้านล่าง

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

แม้ว่าแอตทริบิวต์การตกแต่งเมธอดไม่จำเป็นต้องใช้ใน MVC แต่ก็แสดงให้เห็นชัดเจนยิ่งขึ้นว่าจะผูกแอตทริบิวต์จากลิงก์ไปยังพารามิเตอร์ที่ส่งผ่านในวิธีการอย่างไร


สำหรับฉันแทนที่จะ/Member/Edit/3/full/12สร้าง/Member/Edit/3?type=full&id=12
Arif

1
@Arif ไม่สามารถพูดได้อย่างแน่นอนว่าทำไมและฉันไม่ได้อยู่ในสภาพแวดล้อม C # ในขณะนี้ (ขี้เกียจเกินไปที่จะเริ่มต้นด้วย) อย่างไรก็ตามฉันขอแนะนำว่าขึ้นอยู่กับว่าเราระบุ[FromUrl]หรือ[FromQuery]เป็นต้นอย่างชัดเจนซึ่งอาจแตกต่างกันระหว่างพาเลท. NET เวอร์ชันต่างๆและ / หรือขึ้นอยู่กับการสืบทอดคลาสสำหรับการเรียก WebAPI ที่บริสุทธิ์ (as ตรงข้ามกับคลาสสำหรับBaseController ที่มีมุมมองและทั้งหมดนั้น) เพียงแขกรับเชิญ NB.
Konrad Viltersten

0

หากคุณต้องการใส่รหัสตัวแปรลงในลิงค์ในตารางหรือตารางโค้ดด้านล่างสามารถใช้ได้

[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>

คุณสามารถอธิบายคำตอบของคุณได้หรือไม่? คำตอบที่ใช้รหัสเท่านั้นโดยไม่มีคำอธิบายมักจะถูกลดคะแนนหรือลบออก
SS Anne
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.