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;
}
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With