Я пытаюсь создать собственный маршрут, чтобы я мог добавить в URL префикс URL-адреса к выбранной строке и выполнить некоторую обработку на основе этого. Проблема, с которой я сталкиваюсь, заключается в том, что сгенерированные ссылки на действия не контекстуализируются на основе URL-адреса, по которому они существуют.
Маршруты:
routes.MapRoute(
"TestRoute",
"TEST/{controller}/{action}/{id}",
new { controller = "Space", action = "Index", id = UrlParameter.Optional });
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Space", action = "Index", id = UrlParameter.Optional });
Навигация к TEST / Space / Index работает, а также Space / Index, но странная проблема, которую мне нужно исправить, заключается в том, что ссылки, сгенерированные через ActionLink, не подчиняются контексту, в котором они загружены, по крайней мере для {контроллера } / {action} / {id} маршрут по умолчанию. Страницы, которые загружаются по ссылкам списка TEST / Space / Index должным образом, но когда загружается / Space / Index, все они ссылаются на TEST / route, которого не вызывает вызывающий URL. Это поведение по умолчанию? Есть ли способ заставить эти ссылки генерировать в правильном контексте?
Edit:
Первое место, где я увидел это, было в Html.BeginForm без ТЕСТА /
Html.BeginForm("ToTheMoon", "Space", FormMethod.Post)
, который отображает ссылку как TEST / Space / ToTheMoon
но также отображается в ссылках:
@Html.ActionLink("Take Me To The Space Port", "SpacePort", "Space")
, который отображает TEST / Space / SpacePort