Активная панель навигации в ASP.NET страница

#html #css #asp.net-core #.net-core

#HTML #css #asp.net-ядро #.net-ядро

Вопрос:

Как сделать активную панель навигации на основе дочерней страницы на ASP.NET . Вот страница макета:

 <header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow w3-red">
        <div class="container" id="topheader">
            <img src="~/Images/menubar-logo-white.png" width="136" height="46" />
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse" id="myDIV">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="target nav-link text-white active" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="target nav-link text-white" asp-area="" asp-page="/About">About</a>
                    </li>
                    <li class="nav-item">
                        <a class="target nav-link text-white" asp-area="" asp-page="/Services">Services</a>
                    </li>
                    <li class="nav-item">
                        <a class="target nav-link text-white" asp-area="" asp-page="/Contact">Contact</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
</header>
 

Я пытался использовать javascript, но не смог работать. Вот javascript:

 <script type="text/javascript" >
    $(document).on('click', 'ul li', function () {
        $(this).addClass('active').siblings().removeClass('active')
    });

</script>
 

Ответ №1:

Css будет потерян при перезагрузке страницы. Вы можете сохранить URL-адрес страницы в sessionStorage при нажатии на привязку, а затем добавлять к нему класс css каждый раз при перезагрузке страницы.

 <header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow w3-red">
        <div class="container" id="topheader">

            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse" id="myDIV">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="target nav-link active" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="target nav-link" asp-area="" asp-page="/About">About</a>
                    </li>
                    <li class="nav-item">
                        <a class="target nav-link" asp-area="" asp-page="/Services">Services</a>
                    </li>
                    <li class="nav-item">
                        <a class="target nav-link" asp-area="" asp-page="/Contact">Contact</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
</header>

<script type="text/javascript">
    $(function () {
        var page = sessionStorage.getItem('page');
        var navbar = document.querySelectorAll('li');
        if (page == null) {
            $(navbar[0]).addClass('active');
        } else {
            navbar.forEach((item, index) => {
                if (item.children[0].href == page) {
                    $(item).addClass('active').siblings().removeClass('active');
                }
            });
        }
    })

    $(document).on('click', 'ul li', function () {
        var x = this.children[0].href;
        sessionStorage.setItem('page', x);
    });
</script>
 

введите описание изображения здесь