ASP.NET MVC — как создать ссылку действия, соответствующую контроллеру/{id}/action

У меня есть карта маршрута, например:

routes.MapRoute(
    name: "ConversationDetails",
    url: "Conversations/{id}/Details",
    defaults: new
    {
        controller = "Conversations",
        action = "Details"
    }
);

и я хочу создать @Html.ActionLink, который будет соответствовать моему пути. Когда я ввожу свою ссылку, я хочу сгенерировать id, который будет следовать за именем контроллера «Conversations», и после этого я хочу добавить «Details» в качестве действия, которое я хочу ввести, и передать параметр id. Является ли это возможным ?


person Marox    schedule 21.03.2016    source источник
comment
@Html.ActionLink("xxx", "Details", "Conversations", new { id = someValue }, null) (при условии, что ваш маршрут ConversationDetails предшествует маршруту Default или любому другому маршруту, который будет совпадать)   -  person    schedule 21.03.2016
comment
Но это создает: /Conversations/Details/1 и мне нужно /Conversations/1/Details   -  person Marox    schedule 21.03.2016
comment
Тогда ваш ConversationDetails не первый маршрут в вашей таблице! (порядок или маршруты важны)   -  person    schedule 21.03.2016
comment
Спасибо за ответ. Это не было проблемой порядка, но это было внутри карты маршрута. Теперь он работает правильно и генерирует мои id там, где должен :) большое спасибо!   -  person Marox    schedule 21.03.2016


Ответы (1)


Вы можете использовать URL.RouteURL для достижения того, что вы хотите сделать. См. это: Использование Url.RouteUrl() с именами маршрутов в Площадь

Взято оттуда и модифицировано:

Url.RouteUrl("ConversationDetails", new { id = 5 })
person Brian Mains    schedule 21.03.2016