Убедитесь, что вы регистрируете маршруты, как показано ниже:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "areaRoute",
// if you don't have such an area named as `areaName` already,
// don't make the part of `{area}` optional by `{area:exists}`
template: "{area}/{controller=Home}/{action=Index}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Я мог бы воспроизвести ту же проблему, что и ваша, изменив порядок маршрутов или изменив значение {area}
на необязательное.
- Порядок имеет значение .
areaRoute
должен стоять первым. Не меняйте порядок.
При создании url для области, , если у вас еще нет такой области, не меняйте часть {area}
на необязательную на {area:exists}
. Например, предположим, что вы пытаетесь сгенерировать URL в область MyAreaName
:
Url.Action("actionName", "controllerName", new { Area = "MyAreaName" });
Если в вашем проекте нет области с именем MyAreaName
, и вы сделали область optional
с помощью:
routes.MapRoute(
name: "areaRoute",
template: "{area:exists}/{controller=Home}/{action=Index}");
сгенерированный URL будет controllerName/actionName?Area=MyAreaName
.