Obtener la URL actual en un componente Blazor

asp.net-core blazor c#

Pregunta

Necesito saber la URL de la página actual para comprobar si debo aplicar cierto estilo a un elemento. El siguiente código es un ejemplo.

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

Utilicé el mismo enfoque utilizado en el componente NavLink en el repositorio de Blazor, pero no funcionó. ¿Algunas ideas?.

Respuesta popular

No se usa para conectarse al evento OnLocationChanged en una página o componente, ya que se cargan y eliminan en modo demannd.

Debe registrarse para este evento en app.cshtml ya que no se eliminará.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué