Я уже некоторое время пишу блог как учебный проект, и я просто переписал свою структуру URL, чтобы улучшить организацию своих контроллеров. Это прошло довольно гладко, но у меня есть небольшая проблема с конфликтующим маршрутом.
Я пытаюсь настроить мою структуру URL следующим образом:
/
/page/2
/category
/category/page/2
Категории хранятся в базе данных. В данный момент это работает нормально, но я только заметил, что когда я пытаюсь сделать ссылку на домашнюю страницу, вместо этого появляется /page
.
Вот моя текущая таблица маршрутов:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Admin",
"admin",
new { controller = "Admin", action = "Index" }
);
routes.MapRoute(
"ShowPagedPostsByCategory",
"{category}/page/{page}",
new { controller = "Posts", action = "Index", page = UrlParameter.Optional },
new { page = @"(\d+)?" }
);
routes.MapRoute(
"ShowPagedPosts",
"page/{page}",
new { controller = "Posts", action = "Index", page = UrlParameter.Optional },
new { page = @"(\d+)?" }
);
routes.MapRoute(
"ShowPostsByCategory",
"{category}",
new { controller = "Posts", action = "Index" }
);
routes.MapRoute(
"ShowTaggedPosts",
"posts/tagged/{tag}",
new { controller = "Posts", action = "ShowTaggedPosts", tag = UrlParameter.Optional }
);
routes.MapRoute(
"EditDeleteComment",
"posts/{action}/{id}",
new { controller = "Posts" },
new { action = @"EditComment|DeleteComment", id = @"\d+" }
);
routes.MapRoute(
"AddComment",
"{controller}/comment",
new { controller = "Posts", action = "Comment" }
);
routes.MapRoute(
"ShowPost",
"{controller}/{PostID}/{*slug}",
new { controller = "Posts", action = "ShowPost", slug = UrlParameter.Optional },
new { PostID = @"\d+" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Posts", action = "Index", id = UrlParameter.Optional }
);
}
Я вижу, в чем проблема: домашний URL-адрес '/' совпадает с маршрутом ShowPagedPosts, но перемещение его ниже маршрута по умолчанию кажется неправильным. Это заставляет меня думать, что мой подход к этому немного неправильный. Кто-нибудь может указать мне правильное направление, пожалуйста?
Редактировать: На самом деле, с RouteDebugger я вижу, что он на самом деле соответствует маршрутам ShowPagedPosts и ShowPostsByCategory.