【发布时间】:2010-09-11 08:15:21
【问题描述】:
【问题讨论】:
【问题讨论】:
我在寻找相同答案时发现了这个问题......每个人说这是可能的,但没有人给出实际的解决方案!我现在似乎可以正常工作了,所以我想我会发布我的发现...
我需要的东西:
CSS Friendly Control Adaptors 下载 DLL 和 .browsers 文件(分别到 /bin 和 /App_Browsers 文件夹)
ASP.NET SiteMap(.sitemap XML 文件和siteMap web.config 中的提供程序条目)
我完成的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(); 行会有所帮助,但没有。
还有一件事
虽然这是一个 hack(请有人指出正确的解决方案),但我可以通过打开 superfish.css 文件并搜索和替换 sf-menu 来让它工作 与 AspNet-Menu... 瞧!菜单出现了。我认为asp:Menu 控件中会有一些配置设置,我可以在其中设置<ul> 类,但没有通过谷歌找到任何提示。
【讨论】:
是的,完全有可能。
我已经将它与 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 布局。
【讨论】:
看起来您需要为 Superfish 生成 UL。您应该可以使用站点地图中的 ASP.Net 执行此操作。我认为站点地图控件会做这样的事情。如果没有,直接从 C# 调用站点地图并以编程方式生成 DOM 应该很简单。您可以构建一个用户控件来执行此操作,或在母版页中执行此操作。
查看this MSDN article,了解如何以编程方式枚举站点地图中的节点。
【讨论】:
记得为 NonLink 元素添加 css 类。 Superfish css 元素不适合它们。如果你像我一样拥有不是链接的根菜单,那么它会呈现得很糟糕。只需将 AspNet-Menu-NonLink 元素添加到 superfish.css 文件中,它应该可以正常渲染。
【讨论】:
SiteMapDataSource 控件应该能够绑定到任何分层数据绑定控件。我对 superfish 不熟悉,但我知道有很多 jQueryish 控件可以做到这一点。
【讨论】:
【讨论】: