TagHelper用于将路由值作为链接

时间:2015-05-04 00:14:13

标签: asp.net-core asp.net-core-mvc tag-helpers

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

E.g。如果我想链接到给定对象的编辑网址,则所需的网址例如为/user/edit/5

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

4 个答案:

答案 0 :(得分:67)

您可以使用属性前缀asp-route-作为路径变量名称的前缀。

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

答案 1 :(得分:21)

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

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

<a asp-controller="User" asp-action="Edit" asp-route-id="@item.ID">Edit</a>

或者您想要传递给路线的参数是item.UserName然后

<a asp-controller="User" asp-action="Edit" asp-route-username="@item.UserName">Edit</a>

如果你有两个参数,那么

<a asp-controller="User" asp-action="Edit" asp-route-id="@item.Id" asp-route-username="@item.UserName">Edit</a>

答案 2 :(得分:5)

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

<a asp-controller="User" asp-action="Edit" asp-route-id="@item.ID">Edit</a>

答案 3 :(得分:0)

我将为Razor视图提供另一种使用jsp中@ Html.actionlink的模型值的方法

var URLvalue='@Html.ActionLink("UserString", "action", new { routeValueName1 = "__value1__", routeValueName2="__value2__" }, htmlAttributes: new { @class = "btn btn-default", @role = "button" })'
     .replace('__value1__', Model.somevalue).replace('__value2__',  Model.somevalue);

您可以在jsp或jquery中的任何位置使用URLvalue。