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