Le routage d'URL ASP.NET MVC ne me donne pas de jolies URL
-
03-07-2019 - |
Question
J'ai mis en place un projet ASP.NET MVC et tout fonctionne très bien, mais j'ai un problème de routage. Mon Global.asax ressemble à ceci:
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
Donc, rien d’extraordinaire. Mon problème est que lorsque je lie un contrôleur / action / param avec un HTML.ActionLink comme ceci:
<%= Html.ActionLink("My link", "SomeAction", "SomeController", new {param="someParam"})%>
il devrait générer (du moins ce qui est logique dans ma tête) un lien tel que: http: //www.localhost/SomeController/SomeAction/someParam
.
Mais au lieu de cela, il génère un lien comme celui-ci: http: // localhost / SomeController / SomeAction? param = someParam
Si je crée manuellement un lien qui renvoie au résultat attendu (SomeController / SomeAction / someParam), alors le contrôleur droit et l'action sont appelés, mais le paramètre défini dans la méthode action est toujours null.
Des idées?
La solution
Je pense que ce lien utilisera uniquement la route par défaut comme vous le souhaitez si le nom du paramètre est id
au lieu de param
. Vous devrez créer un itinéraire différent si vous souhaitez y inclure un autre paramètre.
Autres conseils
essayez d'ajouter:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{param}", // URL with parameters
new { controller = "Home", action = "Index", param = "" } // Parameter defaults
);