Можно ли запустить клиентскую страницу Blazor в приложении ASP.NET Core MVC? - PullRequest
5 голосов
/ 02 июля 2019

Я читал о Razor Pages, и идея освобождения от JavaScript очень убедительна. Из того, что я понял, клиент Blazor использует те же библиотеки, что и остальная часть ASP.NET Core, но это отдельная веб-платформа ASP.NET Core.

Можно ли добавить страницу Blazor в приложении ASP.NET Core MVC? Почему он не разрабатывался как дополнение к существующей платформе ASP.NET Core, а не как отдельная платформа?

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

Нет, вы не можете «запустить клиентскую страницу Blazor на основной странице ASP.NET MVC».

Концепция page в Blazor не существует, если только вы не имеете в виду документСтраница, отображаемая в браузере.

Blazor сфокусирован на концепции компонентов: модель компонентов Blazor.

Да, вы можете встроить компоненты Blazor в приложение MVC или приложение Razor Pages.

Вот как это сделать:

  1. Добавить вызов в Htmlвспомогательный метод, который визуализирует Component .Здесь этот компонент фактически содержит остальные компоненты в приложении Blazor (App.razor), поэтому все приложение Blazor будет отображаться в приложении Razor Pages.

Примечание: это не Blazor ... В Blazor у нас нет Html-помощников

<app>@(await Html.RenderStaticComponentAsync<App>())</app>

Ниже приведена ссылка на страницу, где он используется: https://github.com/danroth27/ClientSideBlazorWithPrerendering/blob/master/ClientSideBlazorWithPrerendering.Server/Pages/_Host.cshtml

Обратите внимание, что_Host.cshtml не является компонентом Blazor.Это, опять же, страница Razor Pages.

Обратите внимание, что в примере фактически отображается все приложение Blazor, но, конечно, вы можете использовать обычный простой компонент Blazor (один или несколько, не связанные компоненты или связанные с ними).один, то есть родительский компонент с дочерними компонентами).Принципал такой же.

Надеюсь, это поможет ...

0 голосов
/ 02 июля 2019

Да.Можно запустить клиентскую страницу Blazor на странице ASP.NET MVC Core.

Это просто потому, что на стороне клиента Blazor похоже на приложение React в приложении MVC Core.Это совершенно разные вещи.Клиентский Blazor работает в браузере.Это означает, что MVC создает HTML-страницу, которая запускает Client Blazor таким же образом, как MVC создает HTML-страницу для запуска приложения React.Просто добавьте некоторую магию, специфичную для фреймворка.

Для Blazor это означает добавление как минимум.

<app>Loading...</app>
<script src="_framework/blazor.webassembly.js"></script>

и кода на сервер.

app.UseClientSideBlazorFiles<Client.Startup>();
app.UseEndpoints(endpoints =>
{
    // ...
    endpoints.MapFallbackToClientSideBlazor<Client.Startup>("index.html");
});

Microsoft называет эту модель вшаблоны как Hosted Blazor.

Поскольку MVC выполняется на сервере, единственный способ запустить код Blazor как часть инфраструктуры MVC - это использовать Blazor на стороне сервера, поскольку он должен выполняться на сервере.Опять же, поскольку MVC выполняется на сервере.

Если вы действительно хотите запустить Blazor как часть приложения MVC, то вам следует опубликовать автономное приложение Client Blazor и рассматривать вывод как некоторую библиотеку JS, которую вы должны обслуживать, используязначит стандартный MVC, и внедрить в страницу как-нибудь.Это все еще выполнимо, но ты сам по себе.

...