URL-адрес генерации неверного ASP.NET MVC при использовании нумерации страниц

Я должен

    [HttpGet]
    [Route("{forumName}", Order = 8)]
    [Route("{forumName}/Page/{page}", Order = 7)]
    [OutputCache(Duration = 30, VaryByParam = "forumName;page", Location = OutputCacheLocation.ServerAndClient)]
    public async Task<ActionResult> ShowForum(string forumName, int page = 1)

а также

    [HttpGet]
    [RefreshDetectFilter]
    [Block(VisibleBlock = false)]
    [Route("~/Forums/{forum}/{topicName}", Order = 6)]
    [Route("~/Forums/{forum}/{topicName}/Page/{page}", Order = 5)]
    [OutputCache(Duration = 30, VaryByParam = "topicName;page", Location = OutputCacheLocation.ServerAndClient)]
    public async Task<ActionResult> ShowTopic(string forum, string topicName, int page = 1)

бритва

 <a href="@Url.Action("ShowForum", "Forums", new {forumName = Model.NameTranslit})" title="@Model.Name">@Model.Name</a>

а также

<a href="@Url.Action("ShowTopic", "Forums", new { forum = Model.CurrentForumTranslite, topicName = Model.TitleTranslite })" title="@Model.Title">@Model.Title</a>

Когда я на странице с примером этого

/ Форум / Test / Страница /2

Ссылка на подфорум у меня нормальная ссылка, но ссылка на тему у меня есть со страницы

/ Форум /Test/Test_Topic/Page/2

Но должно быть

/ Форум / Test / Test_Topic

Насколько я понимаю. У меня есть эта ошибка, потому что в моих действиях у меня есть тот же параметр маршрута для страницы

Что я должен сделать, чтобы это исправить?

1 ответ

Решение

Я нашел, как обойти проблему

Для маршрута ShowTopic

[Route("~/Forums/{forum}/{topicName}", Order = 6)]

Я добавил имя

[Route("{forum}/{topicName}", Name = "showTopic", Order = 6)]

И для получения URL в теме, я использую Url.RouteUrl

 <a href="@Url.RouteUrl("showTopic", new { forum = Model.CurrentForumTranslite, topicName = Model.TitleTranslite })" title="@Model.Title">@Model.Title</a>
Другие вопросы по тегам