我一直在阅读有关Razor Pages的信息,从JavaScript中解放出来的想法非常吸引人。从我收集的数据来看,虽然Blazor客户端使用与其余ASP.NET Core相同的库,但它是一个独立的ASP.NET Core Web平台。
是否可以在ASP.NET Core MVC应用程序中添加Blazor页面?为什么不将其开发为现有ASP.NET Core平台的补充,而不是单独的平台?
答案 0 :(得分:0)
否,您不能“在ASP.NET MVC Core页面中运行Blazor客户端页面。”
Blazor中的页面概念不存在,除非您的意思是浏览器中显示了“文档页面”。
Blazor专注于组件的概念:Blazor组件模型。
是的,您可以将Blazor组件嵌入MVC应用程序或Razor Pages应用程序中。
这是这样做的方法:
注意:这不是Blazor ...在Blazor中,我们没有HTML帮助器
<app>@(await Html.RenderStaticComponentAsync<App>())</app>
请注意_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库,并以某种方式插入页面。那仍然可行,但是你自己一个人。