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?

Respuestas a la pregunta(4)

Su respuesta a la pregunta