Как игнорировать текущие значения маршрута при создании ссылок?

Вопрос аналогичен asp.net mvc Html.ActionLink (), сохраняя значение маршрута, которое мне не нужно , но с поворот, который делает его более сложным.

Начиная с нового приложения MVC3 по умолчанию, я меняю маршруты на:

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

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

Обратите внимание, что идентификатор стоит перед действием в первом.

Затем в Home \ Index.cshtml, Я добавляю:

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

Теперь я перехожу к / Home / Foo / Index и просматриваю 3 сгенерированные ссылки. Я получаю

  1. "/ Home / Foo / Index"
  2. "/ Home / blah / Index"
  3. "/ Home / Index? Id = Foo"

Первые два имеют смысл и используют первый маршрут.

Но в третьей ссылке, которая попадает на второй маршрут, я не понимаю, почему id = Foo передается в строке запроса, учитывая, что я явно передал пустой идентификатор. Я бы ожидал, что он просто сгенерирует "/Home/Index".[1237 mental" Может ли кто-нибудь объяснить это и предложить, как я могу заставить его не отображаться?

15
задан Community 23 May 2017 в 11:44
поделиться