亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 Razor 組件集成到具有多個路由的現有 Razor Pages Asp.net Core

如何將 Razor 組件集成到具有多個路由的現有 Razor Pages Asp.net Core

C#
互換的青春 2023-07-09 10:18:09
我有一個現有的 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 上進行了測試和工作,哇!


查看完整回答
反對 回復 2023-07-09
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

在 Blazor 中,布局只是另一個組件(布局文檔),因此我們不應該將腳本標記放在那里。我建議您將其移回 Pages 文件夾中的 _Host.cshtml。如果您使用的是基本模板,那么您的 Counter.razor 組件是什么?如果是這樣,您應該只需添加

<Counter?/>

index.razor 或 FetchData.razor 中的任何位置,并檢查它是否在這些位置工作。

如果您已經移動了 Counter 組件,那么也許可以再次重新閱讀組件文檔,特別是Component Classes部分,我認為這應該對您有所幫助。

有關額外信息,請參閱此錯誤消息:腳本標記不應放置在組件內,因為它們無法動態更新。要解決此問題,請將腳本標記移動到“index.html”文件或其他靜態位置。


查看完整回答
反對 回復 2023-07-09
  • 2 回答
  • 0 關注
  • 188 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號