ASP.NET MVC enrutamiento de URL no me da URL bonitas
-
03-07-2019 - |
Pregunta
He configurado un proyecto MVC de ASP.NET, y todo funciona bien, pero tengo un problema con el enrutamiento. Mi Global.asax tiene este aspecto:
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
);
}
Entonces, nada fuera de lo común. Mi problema es que cuando me vinculo a un controlador / acción / params con un HTML.ActionLink así:
<%= Html.ActionLink("My link", "SomeAction", "SomeController", new {param="someParam"})%>
debería generar (al menos lo que tenga sentido en mi cabeza) un enlace como: http: //www.localhost/SomeController/SomeAction/someParam
.
Pero en su lugar, genera un enlace como este: http://localhost/SomeController/SomeAction?param=someParam
Si realizo manualmente un enlace que enlaza con el resultado esperado (SomeController / SomeAction / someParam), se llama al controlador y la acción correctos, pero el parámetro definido en el método de acción siempre es nulo.
¿Alguna idea?
Solución
Creo que ese enlace solo usará la ruta predeterminada como espera si el nombre del parámetro es id
en lugar de param
. Tendrá que crear una ruta diferente si desea proporcionar algún otro parámetro allí.
Otros consejos
intenta agregar:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{param}", // URL with parameters
new { controller = "Home", action = "Index", param = "" } // Parameter defaults
);