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