// matches /2011/11/07/exact-post-title
routes.MapRoute(
"ArticleDetails",
"{yyyy}/{mm}/{dd}/{title}",
new { controller = "Articles", action = "Details",
new { yyyy = @"(19|20)\d\d.", mm = @"\d\d", dd = @"\d\d" }
);
// matches /2011/11/07
routes.MapRoute(
"ArticlesByDay",
"{yyyy}/{mm}/{dd}",
new { controller = "Articles", action = "ByDay",
new { yyyy = @"(19|20)\d\d.", mm = @"\d\d", dd = @"\d\d" }
);
// matches /2011/11
routes.MapRoute(
"ArticlesByMonth",
"{yyyy}/{mm}",
new { controller = "Articles", action = "ByMonth",
new { yyyy = @"(19|20)\d\d.", mm = @"\d\d" }
);
// matches /2011
routes.MapRoute(
"ArticlesByYear",
"{yyyy}",
new { controller = "Articles", action = "ByYear",
new { yyyy = @"(19|20)\d\d." }
);
Существует какая-то проблема с маршрутом / точный-после-заголовка.Это будет соответствовать почти всем, что вы отправляете.Вы должны были бы указать любой другой возможный маршрут перед этим, чтобы это исправить.Вы также можете просто добавить все эти маршруты к / blog или / article, чтобы исправить это:
routes.MapRoute(
"ExactPostTitle",
"articles/{title}",
new { controller = "Articles", action = "Details" }
);
Теперь это не будет конфликтовать со следующим:
routes.MapRoute(
"About",
"about",
new { controller = "Home", action = "About" }
);
Архив будетаналогично:
routes.MapRoute(
"Archive",
"archive",
new { controller = "Home", action = "Archive" }
);
И, наконец, маршрут тега:
routes.MapRoute(
"Tag",
"tag/{tagtext}",
new { controller = "Tag", action = "Index" }
);
Возможно, вам придется поэкспериментировать с порядком маршрутов, но, как правило, вы всегда хотите сначала выбрать наиболее конкретные маршруты..
Если у вас были следующие маршруты:
routes.MapRoute(
"ExactTitle",
"{title}",
new { controller = "Articles", action = "Details" }
);
routes.MapRoute(
"About",
"about",
new { controller = "Home", action = "About" }
);
Первый маршрут соответствует / примерно, так что вы столкнетесь с проблемами, если они в этом порядке.