web-dev-qa-db-fra.com

TagHelper pour transmettre des valeurs de route dans le cadre d'un lien

Lorsque vous spécifiez asp-controller Et asp-action Sur un lien, quelle est la syntaxe pour transmettre également un attribut id?

Par exemple. Si je souhaitais créer un lien vers l'URL d'édition d'un objet donné, l'URL requise serait par exemple /user/edit/5.

Existe-t-il une méthode pour y parvenir en utilisant TagHelpers, ou devons-nous toujours nous replier sur @Html.ActionLink()?

41
mattdwen

Vous pouvez utiliser le préfixe d'attribut asp-route- pour préfixer les noms de variables de votre route.

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

71
Kiran Challa

J'aimerais suggérer une combinaison des deux autres réponses, mais avec quelques précisions supplémentaires.

Vous utiliserez un préfixe d'attribut asp-route-{name}{name} est le nom du paramètre de route que vous souhaitez utiliser. En d’autres termes, si le nombre 5 de votre route est transmis au contrôleur en tant que valeur d’ID, vous pourriez avoir:

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

ou si le paramètre que vous vouliez transmettre à la route était item.UserName puis

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

Et si vous aviez les deux paramètres alors

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

vous pouvez passer un identifiant personnalisé en utilisant le code ci-dessous:

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