jQuery菜单和ASP.NET Sitemap

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

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

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

我需要的东西:

  • Superfish还包括一个jQuery版本

  • CSS友好控制适配器下载DLL和.browsers文件(分别到/ bin和/ App_Browsers文件夹)

  • ASP.NET SiteMap (web.config中的.sitemap XML文件和siteMap提供程序条目)

我完成的Masterpage.master有以下Masterpage.master

       

这基本上是jQuery Superfish菜单工作所需的全部内容。 页面内部(菜单所在的位置)看起来像这样(基于这些说明 ):

    

根据文档,这似乎应该工作 – 但事实并非如此。 原因是当呈现菜单时, CssClass="sf-menu"被覆盖,

    标签获得class="AspNet-Menu" 。 我想行$('ul.AspNet-Menu').superfish(); 会有所帮助,但事实并非如此。

    还有一件事

    虽然它是一个黑客(并且有人指出我正确的解决方案)我能够通过打开superfish.css文件并使用AspNet-Menu 搜索和替换 sf-menu来使其工作……瞧! 菜单出现了。 我以为在asp:Menu控件中会有一些配置设置,我可以设置

      类,但没有通过谷歌找到任何提示。

      是的,这完全有可能。

      我已经将它与ASP:Menu控件和带有Superfish插件的jQuery 1.2.6一起使用。 注意,您将需要ASP.NET 2.0 CSS友好控制适配器 。

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

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

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

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

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

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

      我创建了一个简洁的小样本项目,您可以在http://simplesitemenu.codeplex.com/上使用它。

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

      请享用!