12

我有一个 asp:Menu,它包含一个指向http://www.example.com/one.aspx的顶级菜单项。当您将鼠标悬停在顶级菜单项上时,它会显示一个下拉菜单,其中一个选项是指向http://www.example.com/one.aspx的 One 。显然,我不能这样做,所以我一直在放一个?在第二个网址的末尾来解决这个问题。我很好奇是否有可能有两个 url 指向 asp:Menu 中的同一位置?

4

4 回答 4

21

我遇到了同样的问题,并使用了您的解决方案的细微变化:我在 URL 中添加了锚点,例如:

顺便说一句:我使用的是站点地图文件,当您将具有相同 URL 的节点添加到该文件时,错误/异常非常明显:

找到具有相同 URL '/WebSite1/MyPage.aspx' 的多个节点。XmlSiteMapProvider 要求站点地图节点具有唯一的 URL。

所以我想真的不可能拥有相同的 URL。

于 2009-01-19T17:02:49.803 回答
2

我不相信。

Menu 控件使用每个项目的 NavigateUrl 属性作为正确突出和展开菜单的标识符 - 如果您有两个具有相同 URL 的节点,控件如何知道要突出显示哪一个?

于 2009-01-19T17:07:22.447 回答
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, ""));
        });
    });
于 2014-06-18T12:48:07.390 回答
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" />
于 2009-02-28T22:01:38.520 回答