【问题标题】:jQuery Menu and ASP.NET SitemapjQuery 菜单和 ASP.NET 站点地图
【发布时间】:2010-09-11 08:15:21
【问题描述】:

是否可以将ASP.NET web.sitemap 与jQuery Superfish 菜单一起使用?

如果没有,是否有任何基于标准的与浏览器无关的插件可用于 web.sitemap 文件?

【问题讨论】:

    标签: asp.net jquery superfish


    【解决方案1】:

    我在寻找相同答案时发现了这个问题......每个人说这是可能的,但没有人给出实际的解决方案!我现在似乎可以正常工作了,所以我想我会发布我的发现...

    我需要的东西:

    我完成的Masterpage.master 有以下head 标签:

    <head runat="server">
        <script type="text/javascript" src="/script/jquery-1.3.2.min.js"></script>
        <script type="text/javascript" src="/script/superfish.js"></script>
        <link href="~/css/superfish.css" type="text/css" rel="stylesheet" media="screen" runat="server" />
        <script type="text/javascript">
    
            $(document).ready(function() {
            $('ul.AspNet-Menu').superfish();
            }); 
    
    </script>
    </head>
    

    这基本上是 jQuery Superfish 菜单工作所需的所有东西。页面内部(菜单所在的位置)如下所示(基于these instructions):

    <asp:SiteMapDataSource ID="SiteMapDataSource" runat="server"
        ShowStartingNode="false" />
    <asp:Menu ID="Menu1" runat="server" 
        DataSourceID="SiteMapDataSource"
        Orientation="Horizontal" CssClass="sf-menu">
    </asp:Menu>
    

    根据文档,这似乎应该有效 - 但事实并非如此。原因是在呈现菜单时CssClass="sf-menu" 被覆盖,&lt;ul&gt; 标记获得class="AspNet-Menu"。我认为$('ul.AspNet-Menu').superfish(); 行会有所帮助,但没有。

    还有一件事

    虽然这是一个 hack(请有人指出正确的解决方案),但我可以通过打开 superfish.css 文件并搜索和替换 sf-menu 来让它工作 与 AspNet-Menu... 瞧!菜单出现了。我认为asp:Menu 控件中会有一些配置设置,我可以在其中设置&lt;ul&gt; 类,但没有通过谷歌找到任何提示。

    【讨论】:

    • 太棒了!自从第一次提出这个问题以来,我一直在寻找答案。
    • 我已经上传了一个包含所有必需文件的示例项目conceptdevelopment.net/Fun/Superfish
    • 关于 CSS 类,您是正确的,它们是不可配置的。类名在 CSSFriendly 代码中是硬编码的。如果你真的想的话,你可以下载源代码、修改类并重建 DLL,但我认为你的方法要简单得多。
    • 这很好用——我遇到的一个问题是没有出现来自 superfish 的下拉箭头图像。这是因为当您使用 SiteMapDataSource 控件时,会添加一个 WebResource.axd,它比 superfish.css 属性具有更高的特异性。我不知道如何阻止添加 WebResource.axd 文件,但您可以将 superfish.css 中的 .sf-sub-indicator 更改为“ul.AspNet-Menu .sf-sub-indicator”和然后将“height:10px !important”添加到类中。您现在应该看到图像。欢迎更好的解决方案
    • 太糟糕了,您需要带有此适配器的适配器。该适配器库在某些控件上一直无法正常工作,而且它已经正式死去几年了。
    【解决方案2】:

    是的,完全有可能。

    我已经将它与 ASP:Menu 控件和带有 Superfish 插件的 jQuery 1.2.6 一起使用。请注意,您将需要ASP.NET 2.0 CSS Friendly Control Adapters。

    ASP.NET 将 ASP:Menu 控件生成为表格布局。 CSS 友好控件适配器将使 ASP.NET 将 ASP:Menu 控件生成为 div 内的 UL/LI 布局。

    这将允许轻松集成 jQuery 和 Superfish 插件,因为 Superfish 插件依赖于 UL/LI 布局。

    【讨论】:

      【解决方案3】:

      看起来您需要为 Superfish 生成 UL。您应该可以使用站点地图中的 ASP.Net 执行此操作。我认为站点地图控件会做这样的事情。如果没有,直接从 C# 调用站点地图并以编程方式生成 DOM 应该很简单。您可以构建一个用户控件来执行此操作,或在母版页中执行此操作。

      查看this MSDN article,了解如何以编程方式枚举站点地图中的节点。

      【讨论】:

        【解决方案4】:

        记得为 NonLink 元素添加 css 类。 Superfish css 元素不适合它们。如果你像我一样拥有不是链接的根菜单,那么它会呈现得很糟糕。只需将 AspNet-Menu-NonLink 元素添加到 superfish.css 文件中,它应该可以正常渲染。

        【讨论】:

          【解决方案5】:

          SiteMapDataSource 控件应该能够绑定到任何分层数据绑定控件。我对 superfish 不熟悉,但我知道有很多 jQueryish 控件可以做到这一点。

          【讨论】:

            【解决方案6】:

            我创建了一个简洁的小示例项目,您可以在 http://simplesitemenu.codeplex.com/ 使用

            它是一个复合控件,可从您的站点地图生成嵌套的 UL/LI 列表。

            享受吧!

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-09-05
              • 1970-01-01
              • 2011-06-07
              相关资源
              最近更新 更多