ASP. NET Веб-приложение Core 3.1 - Component.InvokeAsyn c не отображает ViewComponent - PullRequest
0 голосов
/ 18 марта 2020

У меня есть решение, которое имеет как проект веб-приложения. net core (3.1), так и проект Razor Client Library. Я пытаюсь вернуть компонент представления, который существует в Razor Client Library. Кроме того, у меня есть ссылка на RCL в веб-приложении. Я успешно возвращаю этот ViewComponent, когда я вызываю этот помощник по тегам в веб-приложении _Layout.cshtml

@await Component.InvokeAsync("NavBar", new {})

Это будет работать как есть, но я хочу, чтобы RCL не зависел на имя строки, предоставленной в веб-приложении. Вместо этого я хотел бы вызвать ViewComponent (из _Layout.cshtml) следующим образом -

@{ await Component.RenderMyViewComponentAsync();}

Для меня этот способ более полезен для тех, кто будет использовать эту общую библиотеку RCL, так как им не нужно указывать точное имя ViewComponent.

Я создал вспомогательный класс, который принимает объект Component и просто вызывает его InvokeAsync() метод внутри вспомогательной функции.

public static class PartialHelper
    {
        public static async Task<IHtmlContent> RenderMyViewComponentAsync(this IViewComponentHelper vcHelper)
        {
            return await vcHelper.InvokeAsync("NavBar", new { });
        }
    }

И, конечно же, внутри NavBarViewComponent.cs я реализовал метод InvokeAsync().

 public class NavBarViewComponent : ViewComponent
    {
        public async Task<IViewComponentResult> InvokeAsync()
        {
            return View();
        }
    }

Вот подвох - я не вижу, как мой рендеринг вида на экране из последнего метод, хотя оба способа сделать это все равно ударит мой NavBarViewComponent.InvokeAsync().

Из того, что я вижу, оба способа возврата ViewComponents точно такие же, как и go для тех же методов, за исключением того, что @{ await Component.RenderMyViewComponentAsync();} сначала идет к вспомогательной функции.

I ' я пробовал отлаживать оба пути, но безрезультатно Я застрял!

Есть ли способ добиться того, о чем я здесь прошу? Если требуется какое-либо разъяснение, пожалуйста, не стесняйтесь спрашивать.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...