Почему я не могу использовать помощники тегов для создания ссылок на мою область?

У меня есть настройка маршрута по области в моем веб-приложении .net core 3.1:

Startup.cs / Configure ():

app.UseEndpoints(endpoints =>
            {
                endpoints.MapAreaControllerRoute(name: "secure-route", areaName: "Secure", pattern: "Secure/{controller=Dashboard}/{action=index}/{id?}");
            });

Маршрутизация для этого работает нормально, все страницы в / secure работают нормально. Однако, когда я пытаюсь добавить ссылки или опубликовать форму в любом из представлений, я получаю странные URL-адреса в формате:

https: // localhost: 44370 / MyController / Edit? area = secure

Это должно быть: https: // localhost: 44370 / Secure / MyController / Edit

Есть идеи, что не так?

Я перепробовал все, что касается помощников по тегам, но проблема, похоже, связана с самой маршрутизацией. Ничего из этого не работает:

<form method="post" asp-controller="MyController" asp-action="Edit" asp-area="secure">
<form method="post" asp-controller="MyController" asp-action="Edit">
<button asp-controller="MyController" asp-action="EditMyEntity">Click Me</button>

person klas mack    schedule 24.11.2020    source источник
comment
Вы ставили [Area("secure")] на MyController.cs? И, перейдя на «Ни одна из этих работ», они не отправляли сообщения в неправильные области? Или URL-адреса были сгенерированы некорректно?   -  person David Liang    schedule 24.11.2020
comment
У меня есть SecureBaseController для каждого контроллера в маршруте, например [Авторизация (Roles = Administrator)] [Area (Secure)] общедоступный класс BaseAdminController: Controller {}. Все вышеперечисленные методы дают одинаковый формат URL: localhost: 44370 / MyController / Edit? Area = secure который является 404   -  person klas mack    schedule 24.11.2020
comment
Определена ли у вас маршрутизация по умолчанию в соответствии с вашим MapAreaControllerRoute()?   -  person David Liang    schedule 25.11.2020
comment
@klasmack Есть обновления? Мой ответ тебе поможет?   -  person Brando Zhang    schedule 02.12.2020


Ответы (1)


Согласно вашему описанию, я думаю, вы могли пропустить addTagHelper для этой области. Так что все тэгелеры работать не будут.

Я предлагаю вам попробовать создать новый _ViewImports.cshtml или переместить _ViewImports.cshtml папки представления по умолчанию в корневой путь приложения и добавить коды taghelper.

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

Изображение:

введите описание изображения здесь

person Brando Zhang    schedule 25.11.2020