当sitemapnode的url属性为空时,菜单项不可见

时间:2013-02-13 09:19:28

标签: asp.net

提出了类似的问题here 但它没有提供任何解决方案。此问题的已接受答案仅适用于一个菜单项。如果我们使用“#”作为多个项目的网址,则会出现same url # was used multiple times之类的错误。这就是为什么我再次发布这个来听取专家的解决方案。我的问题是,

我的网站地图如下所示。

<?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。但是当我在我的母版页中渲染它时,Leaves节点根本没有出现。我试过像空的url属性一样 <siteMapNode title="Leaves" url="#">。这也没有为我提供解决方案。我的站点地图页面会出现什么错误?

2 个答案:

答案 0 :(得分:1)

我为这个确切场景做的最简单的解决方案是在第一个URL上放置“#”,然后在第二个URL上放置“##”,在第三个上放置“###”,依此类推。这使得链接不可点击并且还满足唯一URL规则。哈克?或许,但适用于我正在使用它。

答案 1 :(得分:0)

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

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

然后呈现节点 。不幸的是,我不知道为什么。希望这有助于某人!

相关问题