Blazor 구성 요소에서 현재 Url 가져 오기

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

Blazor 저장소에서 NavLink 구성 요소와 동일한 방법을 사용했지만 작동하지 않았습니다. 어떤 아이디어?

인기 답변

페이지 또는 구성 요소의 OnLocationChanged 이벤트에 연결하는 데는 사용되지 않습니다. 이러한 이벤트가로드되고 제거 될 때 제거됩니다.

app.cshtml에서이 이벤트에 등록해야합니다.이 이벤트는 처리되지 않습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.