禁用 Blazor 中的后退按钮

MrC*_*tis 5 blazor blazor-server-side

在基于 Blazor 的 SPA 中,您必须能够阻止用户使用浏览器中的后退按钮返回。但是,我找不到任何有关如何执行此操作的信息。

在经典的 ASPX 中,这相对简单,但如何在 Blazor 应用程序/页面上做到这一点?我在视图上看到过 [NoCache],但这似乎不适用于 Blazor 页面/组件。javascript window.history.forward() 选项可以工作,但它会刷新页面,从而丢失表单更改。

agu*_*ars 5

尚不支持取消导航。请参阅 github 问题:

.Net 7 更新

从 .Net 7 开始,您可以NavigationManager.RegisterLocationChangingHandler使用LocationChangingContext.PreventNavigation

NavigationManager.RegisterLocationChangingHandler(async context =>
{
    if (!EditContext.IsModified())
    {
        return;
    }

    var isConfirmed = await JSRuntime.InvokeAsync<bool>("window.confirm", Localizer["Are you sure you want to leave this page?"]?.ToString())
        .ConfigureAwait(false);

    if (!isConfirmed)
    {
        context.PreventNavigation();
    }
});
Run Code Online (Sandbox Code Playgroud)


MrC*_*tis 1

在 Net7.0 中,此问题已通过添加新的导航管理器功能得到解决。这里有一个问答演示了如何在编辑表单中使用这些功能。-在编辑表单中管理状态并防止 Blazor 导航