我有一个包含多个 blazor Web 应用程序项目的 Visual Studio 解决方案。 每个应用程序都需要使用多个相同的组件。 我想将 Web 程序集组件放置在共享项目中,将它们添加为项目引用并将它们包含在 _imports.razor 文件中,并将它们包含在各种 Web 应用程序的页面上。
我已将“计数器”组件放置在共享项目中并将其添加到页面中:
<Counter @rendermode="InteractiveAuto"/>
但是运行该项目给了我以下错误:
InvalidOperationException:“myawesomenamespace.Counter”类型的组件具有渲染模式“InteractiveAutoRenderMode”,但所需的端点未映射到服务器上。调用“MapRazorComponents”时,添加对“AddInteractiveServerRenderMode”的调用。例如,'builder.MapRazorComponents<...>.AddInteractiveServerRenderMode()'
这一行:
app.MapRazorComponents<web.components.App>().AddInteractiveWebAssemblyRenderMode().AddAdditionalAssemblies(typeof(wasm._imports).Assembly);
存在于服务器Program.cs文件中。
如果我排除“@rendermode =“InteractiveAuto”'指令,组件会呈现,但按钮不起作用。
共享项目中的交互式组件是否可能?
就我而言, 将此行添加到 app.razor 的 body 标签下:
<Routes @rendermode="InteractiveServer" />
将应用于您项目中的所有组件。