Blazor 与 .NET 8:将交互式组件添加到服务器项目时出现错误

问题描述 投票:0回答:1

当我使用 .NET 8 创建新的 Blazor 解决方案并启用 WebAssembly 时,我得到两个项目:客户端和服务器。

我可以添加组件

@rendermode InteractiveAuto

到客户端项目的 Pages/ 文件夹,它们工作正常。

当我对服务器项目执行相同操作时,我在浏览器开发人员控制台中收到此消息:

"Error: One or more errors occurred. (Root component type 'LearnBlazor.Components.Whatever' could not be found in the assembly 'LearnBlazor'"  

其中 LearnBlazor 是服务器端。

我尝试在服务器项目的 Program.cs 中添加一行:

app.MapRazorComponents<App>()
    .AddInteractiveServerRenderMode()
    .AddInteractiveWebAssemblyRenderMode()
    .AddAdditionalAssemblies(typeof(LearnBlazor.Client._Imports).Assembly)
    .AddAdditionalAssemblies(typeof(LearnBlazor.Components.Pages.ComponentNotWorking).Assembly)

但这会引发异常(程序集已添加)。

我通过 Pluralsight 课程(准确地说是 Blazor 基础知识)和 Microsoft Learn 学习了 Blazor,但这两个课程都涵盖了客户端和服务器项目。这些课程都使用单一项目解决方案。

是的,我知道将组件添加到客户端项目可以使其工作,但我想知道它是否也可以在服务器上实现,如果可以的话如何实现。

此外,我想知道是否有任何有效的用例可以将交互式组件添加到服务器端。我对此表示怀疑,因为客户端是处理点击的人,但我要求确定一下。

blazor blazor-webassembly
1个回答
0
投票
  1. 服务端渲染可以使用静态SSR和交互式SSR。
  2. 使用自动渲染模式的组件必须从单独的组件构建 设置 Blazor WebAssembly 主机的客户端项目。
  3. 如果在 Blazor Web 应用程序中本地使用上述组件,请将 客户端项目的 Pages 文件夹中的组件。客户 项目是解决方案的项目,名称以 .Client 结尾。
  4. 可以参考官方文档: https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-8.0
© www.soinside.com 2019 - 2024. All rights reserved.