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