20

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

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

4

6 回答 6

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 菜单工作所需的所有东西。页面内部(菜单所在的位置)如下所示(基于这些说明):

<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();会有所帮助,但它没有。

还有一件事

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

于 2009-03-15T11:24:55.053 回答
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 布局。

于 2008-10-04T22:26:33.367 回答
2

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

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

于 2008-10-04T22:08:19.597 回答
1

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

于 2009-09-16T10:06:00.313 回答
0

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

于 2008-09-19T17:13:54.917 回答
0

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

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

享受!

于 2011-04-19T17:22:19.697 回答