J'ai mis en place un projet ASP.NET MVC, et tout fonctionne très bien, mais j'ai un problème avec le routage. Mon Global.asax ressemble à ceci:Le routage d'URL ASP.NET MVC ne me donne pas de jolies URL
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 quand je lien vers un contrôleur/action/params avec un Html.ActionLink comme ceci:
<%= Html.ActionLink("My link", "SomeAction", "SomeController", new {param="someParam"})%>
il devrait générer (au moins ce qui fait sens dans ma tête) un lien tel que: http://www.localhost/SomeController/SomeAction/someParam
.
Mais au lieu qu'il génère un lien comme celui-ci: http://localhost/SomeController/SomeAction?param=someParam
Si je fais manuellement un lien qui relie le résultat attendu (SomeController/uneAction/someParam) le contrôleur droit et de l'action sont appelés, mais le paramètre défini dans la méthode d'action est toujours nulle.
Des idées?
Hmmm, cela signifie donc que je dois spécifier une nouvelle règle de routage pour chaque nouvelle action du contrôleur qui nécessite un ensemble différent de paramètres? Cela entraînerait une grande quantité de règles de routage pour une application d'entreprise. N'y a-t-il pas une approche plus dynamique que celle-là? – Erik
Si cela était vraiment dynamique, ne perdriez-vous pas la sécurité de type, la sécurité des paramètres et la testabilité? – bzlm