Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access current route using Blazor component

I have an ASP(dot)NET web app that has a simple navbar, I am trying to use a Blazor component that will alter the navbar and increase the width of the left border if the page happens to be the active page. So far I am using a switch statement that will switch based on the current page which is represented by a string. My problem is that I cannot find a way to programmatically find the current URL that the site is on. I have searched up this question multiple times and each solution has not worked for me, using HttpContext has not worked either.

switch (CurrUrl)
{
case "Index":
    <header>
        <div>
            <nav>
                <ul class="main-menu">
                    <li id="CurPage">Home</li>
                    <li class="menu-item">Shop</li>
                    <li class="menu-item">FAQ</li>
                    <li class="menu-item">About</li>
                </ul>
            </nav>
        </div>
    </header>
    break;
case "Shop":
    <header>
        <div>
            <nav>
                <ul class="main-menu">
                    <li class="menu-item">Home</li>
                    <li id="CurPage">Shop</li>
                    <li class="menu-item">FAQ</li>
                    <li class="menu-item">About</li>
                </ul>
            </nav>
        </div>
    </header>
    break;
case "FAQ":
    <header>
        <div>
            <nav>
                <ul class="main-menu">
                    <li class="menu-item">Home</li>
                    <li Class="menu-item">Shop</li>
                    <li id="CurPage">FAQ</li>
                    <li class="menu-item">About</li>
                </ul>
            </nav>
        </div>
    </header>
    break;
case "About":
    <header>
        <div>
            <nav>
                <ul class="main-menu">
                    <li class="menu-item">Home</li>
                    <li class="menu-item">Shop</li>
                    <li class="menu-item">FAQ</li>
                    <li id="CurPage">About</li>
                </ul>
            </nav>
        </div>
    </header>
    break;
}

@code {
    string CurrUrl = null;
}
like image 443
Recht88 Avatar asked Jun 04 '26 07:06

Recht88


1 Answers

I used

<CascadingValue Name="RouteData" Value="routeData"> ... </CascadingValue>

in App.Razor to make de current routeData available to all components as a cascading parameter.

[CascadingParameter(Name = "RouteData")]
public RouteData? RouteData { get; set; }

RouteData has a property 'PageType' which contains the type of the currently routed Page-component.

like image 166
Richard Moeskops Avatar answered Jun 06 '26 20:06

Richard Moeskops



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!