我有一个asp:菜单,它包含一个指向http://www.example.com/one.aspx的顶级菜单项。当您将鼠标悬停在顶级菜单项上时,它会显示一个下拉菜单,其中一个选项为One,指向http://www.example.com/one.aspx。显然,我不能这样做,所以我一直在做?在第二个网址的末尾绕过这个。我很好奇是否有两个url指向asp中的相同位置:菜单?
答案 0 :(得分:21)
我遇到了同样的问题,并使用了一些解决方案:我在URL中添加了锚点,例如:
BTW:我使用的是站点地图文件,当您添加到该文件的URL相同的节点时,错误/异常非常清楚:
具有相同网址的多个节点 '/WebSite1/MyPage.aspx'是 找到。 XmlSiteMapProvider需要 该站点地图节点具有唯一的URL。
所以我想我们确实不可能拥有相同的网址。
答案 1 :(得分:2)
我不相信。
Menu控件使用每个项目的NavigateUrl属性作为标识符以正确突出显示和扩展菜单 - 如果您有两个具有相同URL的节点,控件将如何知道要突出显示哪个节点?
答案 2 :(得分:1)
我在上面的评论中发现我的解决方案仅适用于Firefox,这是一个改进的解决方案,即使您点击与当前链接相同但具有哈希标记的链接,页面也会刷新:
$(document).ready(function () { // refresh page when clicking menu item with current address $('#<%=aspMenu.ClientID%> a').click(function () {
var currentUrl = location.pathname;
var clickedUrl = $(this).attr('href');
if (currentUrl.indexOf('#') != -1 || clickedUrl.indexOf('#') != -1){
if (currentUrl.indexOf('#') != -1)
currentUrl = currentUrl.substring(0, currentUrl.indexOf('#'));
if (clickedUrl.indexOf('#') != -1)
clickedUrl = clickedUrl.substring(0, clickedUrl.indexOf('#'));
if (currentUrl == clickedUrl)
location.reload();
}); });
甚至更好:用文件准备好的hrefs中的数字删除锚点:
$(document).ready(function () {
$('#<%=aspMenu.ClientID%> a').each(function () {
var re = /#\d/
var url = $(this).attr('href');
$(this).attr('href', url.replace(re, ""));
});
});
答案 3 :(得分:0)
您可以附加一个更改的查询字符串变量,例如
<siteMapNode url="~/UnderConstruction.aspx?x=1" title="Customer" description="Customer" />
<siteMapNode url="~/UnderConstruction.aspx?x=2" title="User" description="User" />
<siteMapNode url="~/UnderConstruction.aspx?x=3" title="Area" description="Area" />
<siteMapNode url="~/UnderConstruction.aspx?x=4" title="Well" description="Well" />
<siteMapNode url="~/UnderConstruction.aspx?x=5" title="Build Report" description="Build" />