To make the “Home” NavLink selected when navigating to http://localhost:3002/
or http://localhost:3002/Monitoring/
, you can adjust the Match
attribute of the NavLink
to use a custom match condition. Blazor does not support complex URL matching directly out of the box, but you can achieve this by creating a custom CustomNavLink
component.
CustomNavLink.razor
@inject NavigationManager Navigation @implements IDisposable @if (IsActive) { <NavLink class="nav-link active" href="" Match="NavLinkMatch.All"> @ChildContent </NavLink> } else { <NavLink class="nav-link" href="" Match="NavLinkMatch.All"> @ChildContent </NavLink> } @code { [Parameter] public RenderFragment ChildContent { get; set; } = default!; private bool IsActive { get; set; } protected override void OnInitialized() { Navigation.LocationChanged += OnLocationChanged; } private void OnLocationChanged(object? sender, LocationChangedEventArgs e) { // Handle the URL change here IsActive = MatchUrl(); StateHasChanged(); // Update the UI } private bool MatchUrl() { var uri = NavigationManager.ToAbsoluteUri(NavigationManager.Uri).PathAndQuery; if (uri.Equals("/")) { return true; } if (uri.StartsWith("/Monitoring", StringComparison.OrdinalIgnoreCase)) { return true; } return false; } [Inject] private NavigationManager NavigationManager { get; set; } = default!; public void Dispose() { Navigation.LocationChanged -= OnLocationChanged; } }
<CustomNavLink> <span class="bi bi-house-door-fill-nav-menu" aria-hidden="true"></span> Home </CustomNavLink>