2013-02-13 79 views
1

类似的问题被问到here 但它没有提供任何解决方案。此问题的接受答案仅适用于一个菜单项。如果我们使用“#”作为多个项目的url,那么它会给出错误,如same url # was used multiple times。这就是为什么我再次发布这个来听取专家的解决方案。我的问题是,菜单项不可见,当sitemapnode的url属性为空时

我有像下面的网站地图。

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
    <siteMapNode title="Invisible" description="Main Page" url="Menu.aspx" > 
    <siteMapNode title="Home" url="Default.aspx" /> 
    <siteMapNode title="Time Sheets" url="#"> 
     <siteMapNode title="Time Sheet Entry" description="Menu one" url="Menu1.aspx" /> 
     <siteMapNode title="Time Sheet Approval" description="Menu Two" url="Menu2.aspx" /> 
    </siteMapNode> 
    <siteMapNode title="Leaves"> 
     <siteMapNode title="Leave Request" url="leaverequest.aspx" /> 
     <siteMapNode title="Leave Approval" url="leaveapproval.aspx"/> 
    </siteMapNode> 
    <siteMapNode roles="Administrator" description="Only for administrators" title="Reports" url="SubMenu1.aspx" /> 
    <siteMapNode title="Administration" url="~/UserRegistration.aspx" > 
     <siteMapNode title="Register New User" url="~/Account/AdminRegister.aspx"></siteMapNode> 
    </siteMapNode> 
    <siteMapNode title="Help" url="~/Account/UserSettings.aspx" description=""></siteMapNode> 
    </siteMapNode> 
</siteMap> 

对于叶节点没有任何网址。叶下有两个子菜单。这些只包含到特定页面的网址。但是,当我在我的母版页中渲染这个时,节点根本不出现。我尝试使用空url属性,如 <siteMapNode title="Leaves" url="#">。这也不能解决问题。我的网站地图页面会出现什么错误?

回答

1

我为这种确切的场景所做的最简单的解决方案是在第一个URL上放上“#”,然后在第二个上放上“##”,在第三个上放上“###”等等。这会使链接不可点击并且满足唯一的url规则。哈克?也许,但为我用它的作品。

0

我意识到这是一个老问题,但是如果你将角色属性定义为非空,例如。

<siteMapNode url="" title="Leaves" roles="*"> 

然后节点是呈现。不幸的是,我不知道为什么。希望这可以帮助别人!