Получить текущий Url в компоненте Blazor

asp.net-core blazor c#

Вопрос

Мне нужно знать URL-адрес текущей страницы, чтобы проверить, нужно ли мне применять определенный стиль к элементу. Пример приведен ниже.

@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;
    }
}

Я использовал тот же подход, который использовался в компоненте NavLink в репозитории Blazor, но он не работал. Есть идеи?.

Популярные ответы

Неиспользуется при подключении к событию OnLocationChanged на странице или компоненте, поскольку они загружаются и удаляются на demannd.

Вы должны зарегистрироваться на это событие в app.cshtml, поскольку это не будет удалено.



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему