Я не могу включить ViewComponent на страницу.
У меня есть структура папок:
- Pages
- Components
- ExternalSystems
- Default.cshtml
- Views
- Shared
- Components
- ExternalSystems
- Default.cshtml
Файл класса
public class Default : ViewComponent
{
private readonly Models.PermissionRegisterContext _context;
public Default(Models.PermissionRegisterContext context)
{
_context = context;
}
public async Task<IViewComponentResult> InvokeAsync()
{
var externalSystems = await _context.ExternalSystem.ToListAsync();
return View("Default", externalSystems);
}
}
в Pages/Index.cshtml
Я пытался включить этот компонент методом проб и ошибок (в конце концов, я изучаю этот материал):
@await Component.InvokeAsync("ExternalSystems");
@await Component.InvokeAsync("/Pages/Components/ExternalSystems");
@await Component.InvokeAsync("/Pages/Components/ExternalSystems/Default");
@await Component.InvokeAsync("/Pages/Components/ExternalSystems/Default.cshtml");
@await Component.InvokeAsync("/Views/Shared/ExternalSystems");
Я ожидал, что исключение покажет места, в которых выполняется поиск, как и для @Html.Partial
:
InvalidOperationException: частичное представление 'none' не найдено. Были найдены следующие местоположения: /Pages/none.cshtml /Views/Shared/none.cshtml
Однако для каждого отдельного вызова на @await Component.InvokeAsync
оно выдает это исключение:
InvalidOperationException: Не удалось найти метод Invoke или InvokeAsync для компонента представления .Pages.Identities.IndexModel.
Прежде всего, он не показывает мне искомые пути. Во-вторых, ждать что? Почему вы говорите мне что-то о Pages.Identities? Да, у меня есть эта модель, но она нигде не указана ни в Pages/Index.cshtml
, ни в представлении компонента, который я пытаюсь включить.
Может ли кто-нибудь дать мне руководство, чтобы определить: как искать пути к компонентам? Для Razor Pages это не задокументировано , только на стороннем сайте .
В любом случае, у меня так не получится - каковы будут этапы отладки? Консольная отладка не показывает ничего полезного.
dotnet 2.0.7