jQuery菜单和ASP.NET站点地图

时间:2008-09-19 16:49:27

标签: asp.net jquery superfish

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

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

6 个答案:

答案 0 :(得分:29)

我在找到同样的答案时发现了这个问题......每个人这是可能的,但没有人给出实际的解决方案!我似乎现在正在努力,所以我想发布我的发现......

我需要的东西:

我的完成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"标记获得<ul>时,class="AspNet-Menu"会被覆盖。我认为$('ul.AspNet-Menu').superfish();行会有所帮助,但事实并非如此。

还有一件事

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

答案 1 :(得分:3)

是的,完全有可能。

我已将它与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布局。

答案 2 :(得分:2)

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

查看this MSDN article有关如何以编程方式枚举站点地图中的节点的信息。

答案 3 :(得分:1)

请记住为NonLink元素添加css类。 Superfish css元素不适合他们。如果你像我一样拥有不是链接的根菜单,那么它就会变得非常可怕。只需将AspNet-Menu-NonLink元素添加到superfish.css文件中即可正常渲染。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我在http://simplesitemenu.codeplex.com/

创建了一个简洁的小样本项目

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

享受!