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>