ASP.NET Core MVC의 ASP 태그 도우미에 링크 매개 변수를 추가하는 방법


104

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>

답변:


195

속성 접두사를 사용할 수 있습니다. asp-route- 를 사용하여 경로 변수 이름을 접두사로 .

예:

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

2
매개 변수가 여러 개인 경우이 방법으로 모든 것을 추가해야합니까?
— 엘빈 맘마 도프

40
@ elvin-mammadov, yup,를 사용하여 asp-route-yourParamName예 :asp-route-foo="bar"
— Alex

2
@ElvinMammadov asp-route-yourParamName추가 입력 매개 변수에 대한 귀하의 의견 은 매우 도움이되었습니다. 감사.
— nam

@Alex 예제는 html을 다음과 같이 생성합니다 <a href="https://stackoverflow.com/Product/GetProduct/10">ProductName</a>.. 질문 : 앵커 태그 도우미를 사용하는 동안 어떻게 매개 변수 값 (예 : 10)을 가져올 수 jquery있습니까? `
— nam

3
@nam ASP 도우미 옆에 데이터 속성을 추가 할 수 있습니다. <a asp-route-id="@item.Id" data-id="@item.Id" />다음 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 palatform의 다른 버전간에 다를 수 있으며 / 또는 순수 WebAPI 호출에 대한 상속 클래스에 의존 할 수 있습니다. 뷰와 모든 것이있는 BaseController 의 클래스 와 반대 ). 그냥 손님, NB.
— Konrad Viltersten 19

0

그리드 또는 테이블의 링크에 변수 ID를 넣으려면 코드 아래의 것을 사용할 수 있습니다.

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