Я нахожусь в процессе переноса нашего сайта с дерьмовой CMS на красивый сайт MVC с пользовательским кодом.Пока что все прошло гладко, но у меня есть некоторые проблемы с маршрутизацией.
Наша компания рассылает множество маркетинговых писем и писем.В них мы можем перейти на целевые страницы, чтобы мы могли отслеживать, как идут кампании, а также предлагать больше информации.Таким образом, в письме было бы сказано «посетите www.OurSite.com/LandingPage».Однако в MVC все страницы по умолчанию размещаются в папках их контроллеров.
Так, скажем, у меня есть страница с названием LP в моем контроллере Home, поэтому URL-адрес - www.OurSite.com/Home/LP
Мне нужно, чтобы он стал www.OurSite.com/LP, как и раньше, поэтому наши маркетинговые кампании не получат 404, как только мы запустим новый веб-сайт.Кроме того, набирать текст намного приятнее, поэтому мы не будем использовать его в будущем.
На основе этого маршрута по умолчанию:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
Я пытался создать что-то подобное:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"LandingPage",
"{action}/{id}",
new { controller = "Home", action = "LandingPage", id = UrlParameter.Optional }
);
}
Но это не решает мою проблему.
Я немного погуглил, и это все для действительно сложной маршрутизации, которая на самом деле не применима.Я не очень заинтересован в том, чтобы сделать этот ультра-динамичный или что-то еще.У меня нет проблем при создании нового маршрута каждый раз, когда мы запускаем кампанию.
Следует также отметить, что не все эти страницы будут в контроллере Home.Так что просто удалить маршрут, который не сработает.Наши целевые страницы попадают под множество контроллеров.