Ho problemi con Html.ActionLink quando ho un percorso che richiede più di un parametro. Per esempio, date le seguenti percorsi definiti nel mio file Global.asax:ASP.NET MVC Routing URL con più valori di instradamento
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 = "" }
);
I primi due percorsi funzionano senza problemi, ma quando cerco di creare un collegamento azione per il terzo percorso con:
<%= Html.ActionLink(Html.Encode(product.Name), "Details", new { id = product.ProductId, slug = Html.Encode(product.Name) }) %>
io alla fine con un URL come [site-root]/Dettagli/1? slug = url-lumaca mentre io vorrei l'URL per essere più simile a [site-root]/Dettagli/1/url- slug
Can anyon e vedi dove sto andando male?
Ho sempre avuto questo tipo di problema e non ho mai trovato una soluzione accettabile se non quella di codificare in modo rigido i nomi dei controller e delle azioni. Porta a MOLTI percorsi. – Will
si potrebbe guardare il routing riposante per il progetto ASP.NET MVC http://stevehodgkiss.com/2009/10/11/restful-routes-for-asp-net-mvc.html Io uso questo e posso ottenere url tali come/blogs/1/posts/2/comments/3 – Paul