Говоря {area=Admin}
, вы делаете часть area
необязательной.Таким образом, этому маршруту будет соответствовать маршрут, не содержащий область (с Admin
в качестве выбранной области).
Если вы хотите убедиться, что только путь /Admin/
вызывает вашу область, вы можете сделатьэто так:
routes.MapRoute(
name: "admin",
template: "Admin/{controller=User}/{action=Index}/{id?}",
defaults: new { area = "Admin" });
Вы также можете использовать этот быстрый способ, который также устанавливает ограничение маршрута для вашего региона:
routes.MapAreaRoute("admin", "Admin",
"Admin/{controller=User}/{action=Index}/{id?}");
Кроме того, порядок, в котором вы регистрируете свои маршрутытоже важно.Как правило, будет использоваться первый шаблон маршрута, соответствующий маршруту.Поэтому, поскольку ваш маршрут администратора довольно специфичен, вам, вероятно, следует сначала перечислить его, а затем только вернуться к маршруту по умолчанию.
Как объясняется в документации об областях маршрутизации в MVC, :
Обычная маршрутизация зависит от порядка.В общем, маршруты с областями следует размещать раньше в таблице маршрутов, поскольку они более специфичны, чем маршруты без области.