Я искал решение для моей проблемы.Нашел много похожих проблем, но ни одна из них не привела к решению для меня.
Я пытаюсь зарегистрировать Район в пределах Района.Это работает, однако это «частично» портит мою маршрутизацию.
Мои регистрации маршрутов в том порядке, в котором они зарегистрированы, считают, что регистрации FooBar и Foo поступают из AreaRegistrations
routes.MapRoute("FooBar_default",
"Foo/Bar/{controller}/{action}",
new { area = "Foo/Bar", controller = "Home", action = "Index"},
new[] { BarHomeControllerType.Namespace }
);
routes.MapRoute("Foo_default",
"Foo/{controller}/{action}/{id}",
new { area = "Foo", controller = "Start", action = "Index", id = UrlParameter.Optional },
new { controller = new NotSubArea()},
new[] { typeof(StartController).Namespace }
);
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("PagesRoute", "Pages/{action}", new { controller = "Pages", Action "Index" }).DataTokens["UseNamespaceFallback"] = false;
routes.MapRoute("Default", // Route name
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { typeof(HomeController).Namespace }
).DataTokens["UseNamespaceFallback"] = false;
Теперь возникает следующая проблема.При переходе на Веб-сайт / Foo / или Веб-сайт / Foo / Bar ссылки на этих страницах создаются правильно с использованием:
!{Html.ActionLink<HomeController>(c => c.Index(),"Home", new { area = "Foo/Bar"})}
or
!{ Url.Action("Index", "Home", new { area = "Foo/Bar"}) } //or a different area
Однако, когда я использую это на своих главных страницах, другими словами, Веб-сайт / или Веб-сайт / Главнаяи т. д.
!{Html.ActionLink<HomeController>(c => c.Index(),"Home", new { area = ""})}
or
!{ Url.Action("Index", "Home", new { area = ""}) }
//or with no area identifier specified
Генерирует URL: Веб-сайт / Foo / Bar / Home и т. д. ... Какой из путей неправильный.
Когда я удаляю регистрацию области для Foo / Bar, этовсе снова работаетПереход к URL-адресам Веб-сайт / Дом / О компании или Веб-сайт / Дом напрямую отображает правильные страницы, поэтому я предполагаю, что внутренний UrlHelper каким-то образом выбирает неправильные маршруты для рендеринга.
Я попытался изменить порядок маршрутов FooBar_default и Foo_Default, чтобы маршрут Foo_default был зарегистрирован до маршрута FooBar_default, но затем область больше не работает (ресурс не найден) и ссылки по-прежнему генерируются неправильно.
Самое странное, что удаление регистрации Foo / Bar решает проблему.Я надеялся, что кто-нибудь сможет пролить свет на этот вопрос ..