ASP.NET菜单中缺少没有URL的节点的popout类

时间:2010-09-13 02:59:58

标签: asp.net usability

我遇到一个问题,当站点地图节点没有URL时,ASP菜单控件中的弹出图标不会出现。以以下站点地图节点为例:

<siteMapNode title="Top 1" url="~/Top1.aspx">
  <siteMapNode title="Sub 1" url="~/Sub1.aspx" />
</siteMapNode>
<siteMapNode title="Top 2">
  <siteMapNode title="Sub 2" url="~/Sub2.aspx" />
</siteMapNode>

第一个顶级项目 - Top 1 - 获取一个弹出CSS标记,该标记写入跨越标签的标记。然而,第二个顶级项目 - 前2名 - 没有上课。鉴于此类通常用于保持箭头,表示项目下方有更多内容,这里有一些可用性问题。

有没有人有解决方法?或者,是没有URL属性的站点地图节点以某种方式打破了控件的预期用途吗?

编辑:此问题已在.NET 4.5中修复:https://connect.microsoft.com/VisualStudio/feedback/details/600069/sitemap-menu-nodes-without-a-url-dont-display-a-popout-image-when-child-nodes-exist

3 个答案:

答案 0 :(得分:1)

所以看起来这种行为只发生在ASP.NET4中,在以前的版本中都很好。我把这个称为新控制渲染模式中的一个错误。更多信息:http://www.troyhunt.com/2010/09/net4-web-apps-and-mysteriously-absent.html

答案 1 :(得分:1)

所以,在长时间寻找修复程序之后,我偶然发现了使用jquery的建议。它很棒!只需导入jquery并将以下内容放在head标签中。它会将这些三角形(或您正在使用的任何三角形)添加回具有其下链接的节点。希望它有所帮助!

<script language="javascript" type="text/javascript">
    //the following script adds the triangles back into the menu for items that don't directly link to anything.
    $(document).ready(function () {
        $("li > a.static").each(function () {
            if ($(this).parent().children().length > 1) {
                $(this).addClass("popout");
            }
        });          
    });
</script>

答案 2 :(得分:0)

尝试将url属性设置为#:

<siteMapNode title="Top 2" url="#">

可能的错误原因是没有url字段,节点不是链接,CSS设置为应用于链接。