Я пытаюсь реализовать Area
для администраторов в моем приложении ASP.Net MVC Core 2.
Я настроил маршрут для области следующим образом:
// Default route
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
// Admin area route
app.UseMvc(routes =>
{
routes.MapRoute(
name: "admin",
template: "{area=Admin}/{controller=Home}/{action=Index}/{id?}");
});
Все это работает довольно хорошо.
Этот администратор area
использует тот же Layout
, что и основной веб-сайт, хотя _ViewStart.cshtml
находится в каталоге Areas/Admin/Views
, но все равно работает нормально.
Проблема, с которой я сталкиваюсь, связана с компонентом меню навигации, который находится в основном файле макета сайта, и ссылками href
во всех якорях, указывающими на неправильный URL-адрес в области администрирования.
Скажите, у меня есть следующие ссылки:
<a asp-controller="Account" asp-action="Index">My Account</a>
<a asp-controller="Shopping" asp-action="Basket">Shopping Basket</a>
<a asp-controller="Admin" asp-action="Users">Manage Users</a>
Находясь внутри области администратора, ссылки теперь относятся к области и, таким образом, выглядят так, как если бы они были следующими:
http://localhost/Admin/Account/Index
http://localhost/Admin/Shopping/Basket
http://localhost/Admin/Admin/Users
Есть ли хороший способ сделать все эти ссылки относящимися к корню сайта?