问题:
在Blazor上有没有一种方法可以取消导航?
假设有一个简单的a href
链接,像这样:
<a href="/some/other/blazor/spa/page">Go</a>
我希望取消导航(例如,如果我们正在编辑表单)。
我尝试过的方法:
通过JS
我通过JSInterop设置了onbeforeunload
dom委托:
window.onbeforeunload = function(){
return 'Vols abandonar aquesta pàgina?';
};
但是Blazor绕过了它。
通过locationchanged
我尝试在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;
}