diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 35916bc0d1c..fe19cfed47e 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 9.6.4 + 9.6.5-beta01 diff --git a/src/BootstrapBlazor/Components/Layout/Layout.razor.cs b/src/BootstrapBlazor/Components/Layout/Layout.razor.cs index d408b9473d5..b0b09ba18ae 100644 --- a/src/BootstrapBlazor/Components/Layout/Layout.razor.cs +++ b/src/BootstrapBlazor/Components/Layout/Layout.razor.cs @@ -500,8 +500,8 @@ protected override async Task OnInitializedAsync() // wasm 模式下 开启权限必须提供 AdditionalAssemblies 参数 AdditionalAssemblies ??= [Assembly.GetEntryAssembly()!]; - var uri = Navigation.ToAbsoluteUri(Navigation.Uri); - var context = RouteTableFactory.Create(AdditionalAssemblies, uri.LocalPath); + var url = Navigation.ToBaseRelativePathWithoutQueryAndFragment(); + var context = RouteTableFactory.Create(AdditionalAssemblies, url); if (context.Handler != null) { IsAuthenticated = await context.Handler.IsAuthorizedAsync(ServiceProvider, AuthenticationStateTask, Resource); diff --git a/src/BootstrapBlazor/Extensions/NavigationManagerExtensions.cs b/src/BootstrapBlazor/Extensions/NavigationManagerExtensions.cs index 32cba25db43..a1895cc0568 100644 --- a/src/BootstrapBlazor/Extensions/NavigationManagerExtensions.cs +++ b/src/BootstrapBlazor/Extensions/NavigationManagerExtensions.cs @@ -29,4 +29,27 @@ public static void NavigateTo(this NavigationManager navigation, IServiceProvide option.Closable = closable; navigation.NavigateTo(url); } + + /// + /// 获得当前 Url 的相对路径,不包含 QueryString 和 Fragment(Hash) + /// + /// + /// + public static string ToBaseRelativePathWithoutQueryAndFragment(this NavigationManager navigationManager) + { + var url = navigationManager.ToBaseRelativePath(navigationManager.Uri); + + var index = url.IndexOf('?'); + if (index > -1) + { + url = url[..index]; + } + + index = url.IndexOf('#'); + if (index > -1) + { + url = url[..index]; + } + return url; + } } diff --git a/test/UnitTest/Extensions/NavigationManagerExtensionsTest.cs b/test/UnitTest/Extensions/NavigationManagerExtensionsTest.cs index ce608e9a706..c6cc2361140 100644 --- a/test/UnitTest/Extensions/NavigationManagerExtensionsTest.cs +++ b/test/UnitTest/Extensions/NavigationManagerExtensionsTest.cs @@ -16,4 +16,15 @@ public void NavigateTo_Ok() var provider = Context.Services.GetRequiredService(); nav.NavigateTo(provider, "/Cat", "Cat", "fa-solid fa-font-awesome", false); } + + [Fact] + public void ToBaseRelativePathWithoutQueryAndFragment_Ok() + { + var nav = Context.Services.GetRequiredService(); + nav.NavigateTo("/test?test1=1"); + Assert.Equal("test", nav.ToBaseRelativePathWithoutQueryAndFragment()); + + nav.NavigateTo("/test#1234"); + Assert.Equal("test", nav.ToBaseRelativePathWithoutQueryAndFragment()); + } }