[英]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>(); });
在wwwroot
的index.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.