簡體   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