在基于 Blazor 的 SPA 中,您必须能够阻止用户使用浏览器中的后退按钮返回。但是,我找不到任何有关如何执行此操作的信息。
在经典的 ASPX 中,这相对简单,但如何在 Blazor 应用程序/页面上做到这一点?我在视图上看到过 [NoCache],但这似乎不适用于 Blazor 页面/组件。 javascript window.history.forward() 选项可以工作,但它会刷新页面,从而丢失表单更改。
尚不支持取消导航。请参阅 github 问题:
- 支持取消导航 https://github.com/dotnet/aspnetcore/issues/5620
- NavigationManger 的新事件 https://github.com/dotnet/aspnetcore/issues/14962
.Net 7 更新
从.Net 7开始你可以使用NavigationManager.RegisterLocationChangingHandler
with 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();
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)