Мне любопытно, возможно ли это, или, как я подозреваю, по замыслу нет.
В проекте ASP.NET MVC у меня есть несколько маршрутов, как это:
new Route(
url, // This can be arbitrary
new RouteValueDictionary {
{"area", "MyArea"},
{"controller", "MyController"},
{"action", "Index"}
},
new RouteValueDictionary(),
new RouteValueDictionary {
{"area", "MyArea"},
},
new MvcRouteHandler()))
Я хотел бы создать URL (или ссылки) в представлениях (Razor), используемых действиями MyController. Эти URL должны указывать на другое действие MyController.
Теперь проблема в том, что есть несколько маршрутов, как указано выше, зарегистрированных под разными URL-адресами, поэтому простой вызов Html.ActionLink () или Url.Action () с текущими значениями маршрута дает ссылку, которая указывает на URL-адрес, которому маршрут соответствует в первую очередь. Это. Это не обязательно URL, из которого в данный момент вызывается действие.
В общем, я бы хотел взять текущий маршрут и заменить действие другим. Я не мог найти способ сделать это.
URL-адреса могут быть произвольными, но при необходимости могут применяться ограничения, например, так что URL должен содержать токен действия. Фактически все они в настоящее время делают, поэтому URL имеют следующую структуру:
/AnotherArea/SubSegment/{action} // Routes point from other areas to MyArea/MyController
Эти URL-адреса находятся в Html.ViewContext.RouteData.Route.Url представления, поэтому маркер действия должен быть каким-либо образом изменен при создании нового URL-адреса. (Ну, это можно сделать с помощью замены строки, но я думаю, что если есть решение, оно должно быть лучше.)
Спасибо за ваше время!