У меня есть несколько контроллеров в папке контроллера, не относящейся к области, и у меня есть некоторые контроллеры в папке Areas / Controllers.
Например: у меня есть EquipmentController, ContractsController в папке Controllers (не для области)
У меня есть контроллер SiteManagement в папке Areas / Controllers.
Я могу перейти к оборудованию (http://localhost:3384/Equipment), Контрактам (http://localhost:3384/Contracts) и SiteManagement (http://localhost:3384/SiteManagement/UsersAdmin)), чтобы просмотреть страницу без каких-либо проблем. Однако, когда я нажимаю на ссылку SiteManagement, я не могу перейти вернуться на страницу «Оборудование» или «Контракты», поскольку их ссылки добавлены с помощью SiteManagement / Contracts или SiteManagement / Equipment, и я получаю сообщение об ошибке «страница не найдена».
Я знаю, что есть проблема с маршрутизацией. Как мне исправить эту проблему?
Пример кода со страницы макета (которая находится в папке Views / Shared)
<li class="has-sub">
<a href="collapsed-sidebar.html"><i class="icon-doc-text"></i><span class="title">Contracts</span></a>
<ul class="nav collapse">
<li><a href="@Url.Action("Create", "Contract")"><span class="title">Create New Contract</span></a></li>
<li><a href="@Url.Action("Index", "Contract")"><span class="title">View Contracts</span></a></li>
</ul>
</li>
<li class="has-sub">
<a href="collapsed-sidebar.html"><i class="icon-doc-text"></i><span class="title">Equipment</span></a>
<ul class="nav collapse">
<li><a href="@Url.Action("Create", "Equipment")"><span class="title">Create New Equipment</span></a></li>
<li><a href="@Url.Action("Index", "Equipment")"><span class="title">View Equipment</span></a></li>
</ul>
</li>
<li class="has-sub">
<a href="@Url.Action("Index", "Admin")" title="Adminstrator" aria-expanded="true">
<i class="icon-layout"></i><span class="title">Adminstrator</span>
</a>
<ul class="nav collapse">
<li><a href="@Url.Action("Index", "UsersAdmin", new {Area="SiteManagement" })"><span class="title">Users</span></a></li>
<li><a href="@Url.Action("Index", "RolesAdmin", new {Area="SiteManagement" })"><span class="title">Roles</span></a></li>
</ul>
</li>
Код конфигурации маршрута
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Регистрация области управления сайтом
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"SiteManagement_default",
"SiteManagement/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
}
Ожидаемый результат:
Я хотел бы иметь возможность легко перемещаться между областными и не зональными сайтами.