J'ai vu cette question plusieurs fois ici, dans l'OS, mais aucune fois avec une réponse acceptable :
ASP.NET MVC @Url.Action inclut les données de l'itinéraire actuel
ASP.NET MVC ajoute implicitement des valeurs de route
En gros, j'ai un contrôleur avec une méthode d'action appelée Groupe, il a une surcharge qui ne reçoit aucun paramètre et affiche une liste d'éléments et une autre qui reçoit un id et affiche les détails de ce groupe.
Si je fais quelque chose comme ça :
Url.Action("Group", "Groups");
Depuis la page principale du site (/), il renvoie une url comme celle-ci :
"mysite.com/Groups/Group"
ce qui est correct Maintenant, si l'adresse actuelle du site est /Groups/Group/1 et que j'appelle la même méthode
Url.Action("Group", "Groups");
l'url retournée est la suivante :
"mysite.com/Groups/Group/1"
Il ajoute automatiquement la valeur de la route pour la page actuelle lors de la génération de l'URL. Même si je génère l'URL de cette façon :
Url.Action("Group", "Groups", null);
Ainsi, en spécifiant explicitement que je ne veux pas de valeurs de route, l'URL générée est la même. Pour obtenir l'adresse que je veux, je dois explicitement définir la valeur de route à une chaîne vide, comme ceci :
Url.Action("Group", "Groups", new {id=""});
Cela va générer l'url suivante :
"mysite.com/Groups/Group"
Ma question est la suivante : pourquoi cela se produit-il ? Si je ne définis aucune valeur de route, elle ne devrait pas les ajouter à l'URL générée.