Cómo ignorar los valores de ruta actuales al generar enlaces?
La pregunta es similar a asp.net mvc Html.ActionLink () manteniendo el valor de ruta que no quiero, pero con un giro que lo hace más complejo.
A partir de una nueva aplicación MVC3 predeterminada, cambio las rutas a:
routes.MapRoute(
"r1", // Route name
"{controller}/{id}/{action}"
);
routes.MapRoute(
"r2", // Route name
"{controller}/{action}"
);
Observe que la identificación aparece antes de la acción en la primera.
Luego en Inicio \ Index.cshtml, agrego:
@Url.Action("Index")
@Url.Action("Index", new { id = "blah" })
@Url.Action("Index", new { id = "" })
Ahora navego a / Inicio / Foo / Index y miro los 3 enlaces generados. Yo obteng
"/ Inicio / Foo / Índice" "/ Inicio / bla / Índice" "/ Inicio / Índice? Id = Foo"Los dos primeros tienen sentido y están utilizando la primera ruta.
Pero en el tercer enlace, que llega a la segunda ruta, no entiendo por qué id = Foo se pasa en la cadena de consulta, dado que explícitamente pasé una identificación vacía. Esperaría que solo generara "/Home/Index"
¿Alguien puede explicar eso y sugerirme cómo puedo hacer que no aparezca?