是否可以在ASP.NET Core MVC App中运行Blazor客户端页面?

时间:2019-07-02 14:18:52

标签: c# asp.net-core asp.net-core-mvc blazor

我一直在阅读有关Razor Pages的信息,从JavaScript中解放出来的想法非常吸引人。从我收集的数据来看,虽然Blazor客户端使用与其余ASP.NET Core相同的库,但它是一个独立的ASP.NET Core Web平台。

是否可以在ASP.NET Core MVC应用程序中添加Blazor页面?为什么不将其开发为现有ASP.NET Core平台的补充,而不是单独的平台?

2 个答案:

答案 0 :(得分:0)

否,您不能“在ASP.NET MVC Core页面中运行Blazor客户端页面。”

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组件。再次是“剃刀页面”页面。

请注意,在示例中实际上是渲染了整个Blazor应用程序,但是您当然可以使用普通的简单Blazor组件(一个或多个,不相关的组件或相关的组件,即父组件和子组件)。主体是相同的。

希望这对您有帮助...

答案 1 :(得分:-2)

是的。可以在ASP.NET MVC Core页面中运行Blazor客户端页面。

这仅仅是因为客户端Blazor就像在MVC Core应用程序中具有React应用程序。它们是完全独立的东西。客户端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应用程序,并使用标准MVC方式将输出视为您必须提供的某些JS库,并以某种方式插入页面。那仍然可行,但是你自己一个人。