У меня есть проект ASP.NET Core только с одной областью под названием Data
. Контроллер Home
по умолчанию по-прежнему отсутствует.
Проблема
Ссылка на область Data
в проекте не работает. Хотя маршрутизация работает нормально.
Если я вручную введу ссылку localhost / Data , я получу правильное действие Index
контроллера Home
области Data
. Так что маршрутизация определенно работает.
Однако <a asp-area="Data" asp-controller="Home" asp-action="Index">Data</a>
оценивается по ссылке localhost /? Area = Data , которая не работает и на самом деле должна быть localhost / Data .
Ссылки внутри области Data
также не оцениваются должным образом. Что должно быть localhost / Data / Controller это просто localhost / Controller . Снова ручной ввод ссылки работает нормально.
Конфигурация
Как я настроил проект до сих пор, чтобы попытаться заставить работать ссылки:
- Маршруты добавляются следующим образом
app.UseMvc(routes =>
{
// Default Route
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}"
);
// Area Route
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
});
- Все контроллеры в пределах
Data
имеют атрибут [Area("Data")]
.
- Добавлен TagHelper
_ViewImport.cshtml
в Области / Данные / Представления @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
.
Я вообще пытался следовать официальной документации , но, похоже, ничего не работает.
Вопрос
Так что я, очевидно, хотел бы, чтобы ссылки работали без их «жесткого кодирования», и мне интересно, почему предполагаемое поведение не работает.
Любые советы приветствуются.