Como ignorar os valores atuais da rota ao gerar links?

A pergunta é semelhante a asp.net mvc Html.ActionLink () mantendo o valor da rota que eu não quero, mas com um toque que a torna mais complex

A partir de um novo aplicativo MVC3 padrão, altero as rotas para:

routes.MapRoute(
    "r1", // Route name
    "{controller}/{id}/{action}"
);

routes.MapRoute(
    "r2", // Route name
    "{controller}/{action}"
);

Observe que o ID vem antes da ação no primeir

Em seguida, em Home \ Index.cshtml, adiciono:

@Url.Action("Index")
@Url.Action("Index", new { id = "blah" })
@Url.Action("Index", new { id = "" })

Agora eu navego para / Home / Foo / Index e vejo os 3 links gerados. Eu receb

"/ Página inicial / Foo / Índice" "/ Página inicial / blá / Índice" "/ Página inicial / Índice? Id = Foo"

s dois primeiros fazem sentido e estão usando a primeira rot

Mas no terceiro link, que atinge a segunda rota, não entendo por que id = Foo é passado na string de consulta, já que passei explicitamente um ID vazio. Eu esperaria que ele gerasse "/Home/Index"

Alguém pode explicar isso e sugerir como posso fazê-lo não aparece

questionAnswers(4)

yourAnswerToTheQuestion