html 我可以在Blazor中保持正常的浏览器导航(点击锚A时重新加载新页面)吗?

14ifxucb  于 2023-06-04  发布在  其他
关注(0)|答案(1)|浏览(440)

我想要的是类似于ForceLoad选项,但整个页面。换句话说,Blazor不应该修改页面锚a元素的行为。
ForceLoad:绕过客户端路由并强制浏览器从服务器加载新页面,无论URI是否由客户端路由器处理。默认值为false。

Navigation.NavigateTo("/path", new NavigationOptions
{
    HistoryEntryState = "Navigation state"
});

我正在制作一个“混合”网站(不是混合应用程序),它由一个普通的ASP.NET核心服务,在其中一个页面内,有一个Blazor应用程序。然而,当用户点击一个正常的链接,新页面不会加载,Blazor尝试导航代替。
是否有任何选项使Blazor不会干预页面锚a元素?以便当用户点击链接时,他们会正常地重定向到该页面。

6psbrbz9

6psbrbz91#

使用NavigationManagerLocationChanged事件,我可以手动拦截,然后使用forceLoad选项重定向(NavigateTo)。你可以把事件处理程序放在任何地方,但在我的例子中,我把它放在App.razor中:

@inject NavigationManager Nav;

// ...

@code {
    protected override void OnInitialized()
    {
        Nav.LocationChanged += (_, e) =>
        {
            Nav.NavigateTo(e.Location, true);
        };
    }
}

相关问题