我正在尝试使用 Visual Studio 中的“.net Maui Blazor 和 Web App”模板在 .net 9 和 Blazor 中创建一个项目。
我已经创建了项目,并成功运行了它,我可以看到该项目作为Windows App运行,或者将启动项目设置为Web项目,然后在浏览器中运行它。
到目前为止一切都很好。
现在我向 Web 项目添加一个名为“Test”的测试页面。 我把它放在 Web 项目中,因为我不希望它与 Maui 项目共享。 然后我再次运行该项目,并输入测试页的地址。 “测试”页面正确显示 1 秒,然后消失并显示“未找到”消息。
如果我将测试页添加到共享目录,它会正常显示。
我一直无法解决这个问题。 我在这里创建了一个测试仓库:https://github.com/gregoryagu/MauiApp5
我需要做什么才能让测试页面正常显示?
首先,为什么它不起作用。这里的链条是:
在 Web/Program.cs 中,根目录是
app.MapRazorComponents<App>()
Web/Components.App.razor使用
<Routes @rendermode="InteractiveServer" />
共享/Routes.razor有
<Router AppAssembly="typeof(Layout.MainLayout).Assembly" >
因此,路由器会扫描包含 MainLayout 的程序集中的页面。您需要的(但不会立即起作用)是
<Router AppAssembly="typeof(Layout.MainLayout).Assembly"
AdditionalAssemblies="typeof(Pages.Test)">
由于您无法拥有从共享到 Web 程序集的循环依赖关系,因此您将需要一个单独的路由器。
Routes.razor
复制到 Web/组件。将其重命名为 RoutesWeb.razor .AdditionalAssemblies="[typeof(Pages.Test).Assembly]"
添加到第一行。DefaultLayout="typeof(Shared.Layout.MainLayout)"
<RoutesWeb @rendermode="InteractiveServer" />