Is there a way on Blazor to cancel navigation?
Let's supose a siple a href
like this:
<a href="/some/other/blazor/spa/page">Go</a>
I would like to cancel navigation (for example if we are editing a form)
I set onbeforeunload
dom delegate via JSInterop:
window.onbeforeunload = function(){
return 'Vols abandonar aquesta pàgina?';
};
but blazor bypass it.
I tried unsuccessfully to intercept navigation on locationchanged
event:
@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;
}
Currently no, this feature is being discussed for .NET V5 - and has a community contribution pull-request so hopefully will make it in. https://github.com/dotnet/aspnetcore/pull/24417
The page is not changed when you navigate in Blazor, so there is no unload in order to trigger onbeforeunload.
Update to @PeterMorris answer.
As of 2021-05-17 a location changing event for NavigationManger
is now committed for .NET 6.0
. I hope it will be possible to catch this event on a global level in the application.
https://github.com/dotnet/aspnetcore/issues/14962
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With