我有一個現有的 Razor Page asp.net Core 2.2 項目,我正在嘗試移植到 asp.net core 3(我知道這仍處于預覽階段,但 RC 即將到來,我只是在復習)這是一個基本項目有一些簡單的頁面和這些頁面的一些路由。我可以讓組件正確渲染,但動態內容的 SignlaR 連接僅適用于索引頁面,無論我在何處注入 blazor js我的startup.cs看起來像這樣public class Startup{ public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { options.CheckConsentNeeded = context => true; }); services.AddRazorPages(); services.AddServerSideBlazor(); services.AddMvc(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapBlazorHub(); endpoints.MapRazorPages(); endpoints.MapControllers(); }); }}我創建了 _imports.razor 文件,其中包含...@using System.Net.Http@using Microsoft.AspNetCore.Components.Forms@using Microsoft.AspNetCore.Components.Layouts@using Microsoft.AspNetCore.Components.Routing@using Microsoft.JSInterop@using Web@using Web.Components...并且在我的 _Layout.cshtml 文件中,我放置了對 blazor 腳本的引用...<script src="_framework/blazor.server.js"></script>在我的索引和子頁面上,我都像這樣調用該組件......<div id="counter"> @(await Html.RenderComponentAsync<Web.Components.Counter>(new { }))</div>在網站的索引頁面上,一切正常,通過 SignalR 使用動態服務器執行代碼渲染 CSS 和 HTML。但是,一旦轉到另一個頁面或路由,CSS 和 HTML 仍然會呈現,但動態服務器端內容會停止,即使我已將 blazor.server.js 放置在全局布局中。這是否不適用于鏈接到父布局頁面的所有子頁面和路由?
2 回答

隔江千里
TA貢獻1906條經驗 獲得超10個贊
對于任何正在尋找的人,我設法找到了答案。
除了進行上面提到的所有更改之外,您還需要將其放在 _Layout.cshtml 中的 HEAD 標記內
<base href="~/" />
此后,動態服務器端組件可以在任何路由和頁面上工作。也在 Preview 7 上進行了測試和工作,哇!

汪汪一只貓
TA貢獻1898條經驗 獲得超8個贊
在 Blazor 中,布局只是另一個組件(布局文檔),因此我們不應該將腳本標記放在那里。我建議您將其移回 Pages 文件夾中的 _Host.cshtml。如果您使用的是基本模板,那么您的 Counter.razor 組件是什么?如果是這樣,您應該只需添加
<Counter?/>
index.razor 或 FetchData.razor 中的任何位置,并檢查它是否在這些位置工作。
如果您已經移動了 Counter 組件,那么也許可以再次重新閱讀組件文檔,特別是Component Classes部分,我認為這應該對您有所幫助。
有關額外信息,請參閱此錯誤消息:腳本標記不應放置在組件內,因為它們無法動態更新。要解決此問題,請將腳本標記移動到“index.html”文件或其他靜態位置。
- 2 回答
- 0 關注
- 188 瀏覽
添加回答
舉報
0/150
提交
取消