繁体   English   中英

Blazor 路由 - 导航到静态页面

[英]Blazor routing - navigating to a static page

我正在尝试创建一个 Blazor 应用程序以在网站上使用。 大多数网站都是静态的,出于客户端性能的原因,我希望这部分由静态 HTML 文件提供。 网站的一些页面将由 Blazor 应用程序呈现。 在对此进行原型设计时,我遇到了一个问题:当从 Blazor 部分导航回网站的静态部分时,我收到“错误:System.InvalidOperationException:'Router' 找不到任何带有 '/index.js 路由的组件。 html'。”

index.html 的链接位于包含该应用程序的页面的 body 标记中,但在 app 标记之外,并且应该不在 Blazor 的注意范围内。 我知道问题的原因是路由器找不到路由的组件,但是为什么 Blazor 试图找到该组件而不是让浏览器导航到非 Blazor 页面? 这个链接应该由浏览器处理,而不是 Blazor,我曾想过?

在您站点的startup.cs中,将app.UseBlazor()语句更改为:

app.Map("/bzr", child => { child.UseBlazor<Blazor.Program>(); });

wwwrootindex.html中,将 base href 更改为:

<base href="/bzr/" />

现在/bzr文件夹之外的任何内容都可以作为常规网站使用。

这种行为是由于路由器使用UriHelper搜索文档库中的组件uri( <base href="/" /> )。 通过向非组件的链接提供绝对uri,可以实现临时解决方案,例如: <a href="https://www.asp.net/">Asp Net<a>

尝试这个; 注意:代码应放在服务器端应用程序的Configure方法中

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
--- ---- ---
            // Mount the server-side Blazor app on /subdir
            app.Map("/subdir", subdirApp =>
            {

                subdirApp.UseBlazor<YourBlazorApp.Startup>();
            });
        } 

资料来源: https//github.com/aspnet/AspNetCore/blob/master/src/Components/test/testapps/TestServer/Startup.cs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM