Erhalte die aktuelle URL in einer Blazor-Komponente

asp.net-core blazor c#

Frage

Ich muss die URL der aktuellen Seite kennen, um zu überprüfen, ob ich bestimmten Stil auf ein Element anwenden muss. Der folgende Code ist ein Beispiel.

@using Microsoft.AspNetCore.Blazor.Services
@inject IUriHelper UriHelper
@implements IDisposable

<h1>@url</h1>
<nav>
    <div class="nav-wrapper">
        <a href="#" class="brand-logo">Blazor</a>
        <ul id="nav-mobile" class="right hide-on-med-and-down">
            <li>
                <NavLink href="/" Match=NavLinkMatch.All>
                    Home
                </NavLink>
            </li>
            <li>
                <NavLink href="/counter">
                    Counter
                </NavLink>
            </li>
            <li>
                <NavLink href="/fetchdata">
                    Fetch data
                </NavLink>
            </li>
        </ul>
    </div>
</nav>

@functions {

    private string url = string.Empty;

    protected override void OnInit()
    {
        url = UriHelper.GetAbsoluteUri();
        UriHelper.OnLocationChanged += OnLocationChanged;
    }

    private void OnLocationChanged(object sender, string newUriAbsolute)
    {
        url = newUriAbsolute;
    }

    public void Dispose()
    {
        UriHelper.OnLocationChanged -= OnLocationChanged;
    }
}

Ich habe den gleichen Ansatz wie in der NavLink-Komponente im Blazor-Repository verwendet, aber es hat nicht funktioniert. Irgendwelche Ideen?.

Beliebte Antwort

Es gibt keine Verwendung beim Verbinden mit dem OnLocationChanged Ereignis auf einer Seite oder in einer Komponente, wenn sie auf dem Demand geladen und verteilt werden.

Sie sollten sich für dieses Ereignis in app.cshtml registrieren, da dieses nicht entfernt wird.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum