Як додати параметр посилання до помічників тегів asp в ASP.NET Core MVC


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"
Алекс

2
@ElvinMammadov Ваш коментар asp-route-yourParamNameщодо додаткових вхідних параметрів був дуже корисним. Дякую.
нам

@Alex Ваш приклад буде генерувати HTML як: <a href="https://stackoverflow.com/Product/GetProduct/10">ProductName</a>. Питання : Використовуючи помічник тега якоря, як ми можемо отримати значення параметра (наприклад, 10) jquery? `
нам

3
@nam Ви можете додати атрибут даних поруч із помічником ASP. <a asp-route-id="@item.Id" data-id="@item.Id" />а потім $('a').attr('data-id')
дістаньте

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
Аріф

1
@Arif Не можу сказати точно, чому я зараз не перебуваю в середовищі C # (занадто ліниво, щоб запустити його теж). Однак я б припустив, що це залежить від того, чітко ми заявляємо [FromUrl] або [FromQuery] тощо, які можуть відрізнятися між різними версіями піднебінної платформи .NET та / або залежати від класів успадкування для чистих викликів WebAPI (як на відміну від класів для BaseController з переглядами і все таке). Просто гостіфікація, NB.
Конрад Вільтерстен

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>

Чи можете ви пояснити свою відповідь? Відповіді, що стосуються лише коду, без пояснень, як правило, зводяться або видаляються.
СС Енн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.