Супер простой сайт MVC с Area для работы с мобильными устройствами. Вся моя область маршрутизации работает нормально, за исключением представления, которое ожидает параметр.
На "нормальном" сайте у меня есть страница просмотра видео, которая ожидает параметр.
mysite.com / Видео / 123456
Это отлично работает. После того, как я немного боролся с этим в своем Зоне за мобильный контент, я даже начал использовать точно такой же код / разметку в моем контроллере и представлении. Так что я ожидаю, что следующий URL:
mysite.com / Mobile / Видео / 123456
Решил бы правильно. Это не так. Я получаю 404 (не найден). Если я отключу параметр:
mysite.com / Mobile / Видео
Правильно разрешается.
Я уверен, что это должно быть что-то, что я делаю неправильно в маршрутизации. Ниже приведен соответствующий раздел из моего global.asax. Любая помощь будет оценена.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Video", // Route name
"Video/{id}", // URL with parameters
new { controller = "Video", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "mysite.Controllers.VideoController" }
);
routes.MapRoute(
"NewsItem", // Route name
"NewsItem/{id}", // URL with parameters
new { controller = "NewsItem", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "mysite.Controllers.HomeController" }
);
routes.MapRoute(
"Mobile", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { area = "Mobile", controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "mysite.Areas.Mobile.Controllers.HomeController" }
);
routes.MapRoute(
"Mobile/Video", // Route name
"Mobile/Video/{id}", // URL with parameters
new { area = "Mobile", controller = "Video", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "mysite.Areas.Mobile.Controllers.VideoController" }
);
}