Нажмите на "Якорь" <a> Ищет страницу в дублированной вложенной иерархии, которая не существует

У меня есть список меню, как показано ниже, каждая ссылка меню является привязкой. Я испытываю очень странное поведение из-за тега привязки, то есть, когда я нажимаю на любое меню, оно корректно открывает запрашиваемую страницу. Но при втором щелчке система дублирует иерархию каталогов и ищет запрошенную страницу, где иерархия не существует. Например, есть страница по пути "Pages/Contact/test.aspx", 1-й щелчок открывает страницу. Когда пользователь нажимает второй раз, браузер пытается открыть страницу по пути "Pages/Contact/Pages/Contact/test.aspx", что приводит к исключению "Не удается найти ресурс".

<div id="menu">
    <ul class="menu">
        <li><a href="" class="parent"><span>About Us</span></a>
            <div>
                <ul>
                    <li><a href="Pages/Contact/Phone.aspx" ><span>Phone</span></a></li>
                    <li><a href="Pages/Contact/Email.aspx" ><span>Email</span></a></li>

                </ul>
            </div>
        </li>
        </ul>
        </div>

2 ответа

Решение

Проблема в том, что вы используете относительные пути к своим страницам.

Это работает в первый раз, потому что (я полагаю) вы находитесь в корневом каталоге. Таким образом, нажав на ссылку, вы перейдете к "Pages/Contact/Phone.aspx". Когда в phone.aspx, если вы нажмете ссылку еще раз, она ищет эту страницу: Pages/Contact/Pages/Contact/Phone.aspx,

Вам нужно добавить / к началу вашего URL, чтобы сделать его относительно корня сайта:

<ul>
    <li><a href="/Pages/Contact/Phone.aspx" ><span>Phone</span></a></li>
    <li><a href="/Pages/Contact/Email.aspx" ><span>Email</span></a></li>
</ul>

Или же, поскольку вы используете ASP.Net, вы можете использовать ResolveUrl() Функция, чтобы убедиться, что все ваши ссылки относительно корня решения:

<ul>
    <li><a href="<%= ResolveUrl("~/Pages/Contact/Phone.aspx") %>"><span>Phone</span></a></li>
    <li><a href="<%= ResolveUrl("~/Pages/Contact/Email.aspx") %>"><span>Email</span></a></li>
</ul>

Я верю href="" is your problem here.

Пытаться href="#" или же href="javascript:;"

Другие вопросы по тегам