我的应用程序中有一些表单.
如何以这样的方式保护表单:如果有人导航或关闭浏览器选项卡,应提示他们确认他们确实要保留未保存数据的表单?
Blazor 有没有办法取消导航?
让我们假设一个a href像这样的 siple :
<a href="/some/other/blazor/spa/page">Go</a>
Run Code Online (Sandbox Code Playgroud)
我想取消导航(例如,如果我们正在编辑表单)
我onbeforeunload通过 JSInterop设置了dom 委托:
window.onbeforeunload = function(){
return 'Vols abandonar aquesta pàgina?';
};
Run Code Online (Sandbox Code Playgroud)
但 blazor 绕过它。
我尝试拦截locationchanged事件导航失败:
@implements IDisposable
@inject NavigationManager NavigationManager
...
protected override void OnInitialized()
{
NavigationManager.LocationChanged += HandleLocationChanged;
}
private void HandleLocationChanged(object sender, LocationChangedEventArgs e)
{
// Cancel Navigation Here
}
public void Dispose()
{
NavigationManager.LocationChanged -= HandleLocationChanged;
}
Run Code Online (Sandbox Code Playgroud)