Нажмите на "Якорь" <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:;"