J'ai des problèmes avec Html.ActionLink lorsque j'ai un itinéraire qui prend plus d'un paramètre. Par exemple, étant donné les itinéraires suivants définis dans mon fichier Global.asax:Routage d'URL ASP.NET MVC avec plusieurs valeurs de route
routes.MapRoute(
"Default", // Route name
"{controller}.mvc/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
routes.MapRoute(
"Tagging",
"{controller}.mvc/{action}/{tags}",
new { controller = "Products", action = "Index", tags = "" }
);
routes.MapRoute(
"SlugsAfterId",
"{controller}.mvc/{action}/{id}/{slug}",
new { controller = "Products", action = "Browse", id = "", slug = "" }
);
Les deux premières routes fonctionnent sans problème, mais lorsque je tente de créer un lien d'action à la troisième voie en utilisant:
<%= Html.ActionLink(Html.Encode(product.Name), "Details", new { id = product.ProductId, slug = Html.Encode(product.Name) }) %>
Je me retrouve avec une URL comme [site-root]/Details/1? Slug = url-slug alors que je voudrais que l'URL ressemble plus à [site-root]/Details/1/url- limace
Peut-on Je vois où je vais mal?
J'ai toujours eu ce genre de problème et je n'ai jamais trouvé une solution acceptable autre que de coder en dur le contrôleur et les noms d'actions. Conduit à beaucoup de routes. – Will
vous pouvez regarder le routage reposant pour le projet ASP.NET MVC http://stevehodgkiss.com/2009/10/11/restful-routes-for-asp-net-mvc.html Je l'utilise et peut atteindre des URL telles as/blogs/1/posts/2/comments/3 – Paul