如何在ASP.NET Core MVC中向asp标记助手添加链接参数

Elv*_*dov 81 c# url-parameters asp.net-core-mvc tag-helpers asp.net-core

我对ASP.NET MVC 1-5有很多经验.现在我学习ASP.NET Core MVC并且必须将参数传递给页面中的链接.例如,我有以下Action

 [HttpGet]
 public ActionResult GetProduct(string id)
 {
      ViewBag.CaseId = id;
      return View();
 }
Run Code Online (Sandbox Code Playgroud)

如何使用标记帮助程序实现此操作的链接?

<a asp-controller="Product" asp-action="GetProduct">ProductName</a>
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 157

您可以使用属性前缀asp-route-为路由变量名称添加前缀.

例:

<a asp-controller="Product" asp-action="GetProduct" asp-route-id="10"> ProductName</a>
Run Code Online (Sandbox Code Playgroud)

  • @ elvin-mammadov,是的,使用`asp-route-yourParamName`,例如:`asp-route-foo ="bar"` (36认同)
  • @nam你可以在ASP助手旁边添加一个数据属性.`<a asp-route-id="@item.Id" data-id="@item.Id" />`然后使用`$('a')获取id.attr('data-id') `:) (3认同)
  • 如果我有多个参数,我必须用这个方法添加所有内容吗? (2认同)
  • @ElvinMammadov关于其他输入参数的注释`asp-route-yourParamName`非常有帮助.谢谢. (2认同)
  • 如果我想以编程方式添加 5 个查询参数怎么办? (2认同)

Kon*_*ten 9

您可能要应用以下语法。

<a asp-controller="Member"
   asp-action="Edit"
   asp-route-level="3"
   asp-route-type="full"
   asp-route-id="12">Click me</a>
Run Code Online (Sandbox Code Playgroud)

这样将产生这样的呼叫路由。

/会员/编辑/ 3 /完整/ 12

然后,您可以通过如下所示的方法接收它。

[Route({level}/{type}/{id})]
public IActionResult Edit(int level, string type, int id) { ... }
Run Code Online (Sandbox Code Playgroud)

尽管在MVC中不需要修饰该方法的属性,但是它更清楚地显示了如何将链接中的属性绑定到方法中传递的参数。


Nee*_*han 9

如果你想将变量 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>
Run Code Online (Sandbox Code Playgroud)