TagHelper用于将路由值作为链接的一部分传递

mat*_*wen 43 asp.net-core-mvc tag-helpers asp.net-core

在指定asp-controllerasp-action链接时,传递id属性的语法是什么?

例如,如果我想链接到给定对象的编辑URL,则所需的URL将是/user/edit/5例如.

有没有一种方法可以使用TagHelper实现这一目标,还是我们仍然需要回归@Html.ActionLink()

Kir*_*lla 74

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

例: <a asp-action="Edit" asp-route-id="10" asp-route-foo="bar">Edit</a>

  • 我无法让它工作,因为我的“asp-route-foobar”与我的路线不匹配:“routes.MapRoute(“yearNoCombo”,模板:“{controller=Home}/{action=Index}/{ foob​​ar?}/{whatever1}/{whatever2}"); - 路由名称必须匹配。HTH 其他。 (2认同)

Ale*_*ite 26

我想建议另外两个答案的组合,但需要一些额外的澄清.

您将使用属性前缀asp-route-{name},其中{name}是您要使用的路由参数的名称.换句话说,如果您的路线中的数字5作为ID值传递到控制器,您可以:

<a asp-controller="User" asp-action="Edit" asp-route-id="@item.ID">Edit</a>
Run Code Online (Sandbox Code Playgroud)

或者,如果要传递给路径的参数是item.UserName则

<a asp-controller="User" asp-action="Edit" asp-route-username="@item.UserName">Edit</a>
Run Code Online (Sandbox Code Playgroud)

如果你有两个参数那么

<a asp-controller="User" asp-action="Edit" asp-route-id="@item.Id" asp-route-username="@item.UserName">Edit</a>
Run Code Online (Sandbox Code Playgroud)


Zub*_*yub 5

您可以使用以下代码传递自定义ID:

<a asp-controller="User" asp-action="Edit" asp-route-id="@item.ID">Edit</a>
Run Code Online (Sandbox Code Playgroud)