Я бы предложил немного изменить ваше промежуточное ПО маршрутизации:
Вам необходимо использовать метод MapAreaRoute, который сообщит имя области и формат URL.
app.UseMvc(routes =>
{
routes.MapAreaRoute("catalog_route_name", "Catalog",
"Catalog/{controller}/{action}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Затем вам нужно указатьАтрибут области на ваших контроллерах.
namespace MyApp.Namespace1
{
[Area("Catalog")]
public class ProductsController : Controller
{
public IActionResult AddProduct()
{
return View();
}
}
}
Как только это изменение будет выполнено, вы можете указать область, как показано ниже:
<a asp-area="Catalog" asp-controller="Products" asp-action="Index">
Catalog/Products/Index
</a>
Это, безусловно, должно работать.