jQuery菜单和ASP.NET网站地图
是否有可能使用带有jQuery Superfish菜单的ASP.NET web.sitemap?jQuery菜单和ASP.NET网站地图
如果没有,是否有任何标准的浏览器无关插件可用于web.sitemap文件?
我在寻找相同的答案时发现此问题...大家说这是可能的,但没有人给出实际的解决方案!我似乎现在工作,所以想我会后我发现......
的事情,我需要:
CSS Friendly Control Adaptors下载DLL和.browsers文件(分别位于/ bin和/ App_Browsers文件夹中)
ASP.NET SiteMap(a .sitemap XML file and
siteMap
provider e在web.config中n尝试)
我完成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的快鱼菜单工作的所有东西。里面的页面(如菜单进入)看起来像这样(基于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>
,这似乎像它应该工作 - 但事实并非如此。原因是当呈现菜单并且<ul>
标签获得class="AspNet-Menu"
时,CssClass="sf-menu"
会被覆盖。我认为行$('ul.AspNet-Menu').superfish();
会有所帮助,但它没有。
一件事
虽然这是一个黑客(并请有人点我到正确的解决方案),我能得到它的工作通过打开superfish.css
文件和搜索和替换SF-菜单与AspNet-Menu ...和瞧!菜单出现了。我认为在asp:Menu
控件中会有一些配置设置,我可以设置<ul>
类,但没有通过谷歌找到任何提示。
SiteMapDataSource控件应该能够绑定到任何分层数据绑定控件。我对superfish并不熟悉,但我知道有很多jQuery控件可以做到这一点。
看起来你需要为Superfish生成一个UL。你应该可以在你的网站地图上用ASP.Net来做到这一点。我认为网站地图控件会做这样的事情。如果不是,直接从C#调用站点地图并以编程方式生成DOM应该是相当简单的。您可以构建一个用户控件来执行此操作,或者在母版页中执行此操作。
检查出this MSDN article如何以编程方式枚举您的站点地图中的节点。
是的,这是完全可能的。
我用它与ASP:Menu控件和jQuery 1.2.6与Superfish插件。请注意,您将需要ASP.NET 2.0 CSS Friendly Control Adapters。
ASP.NET生成ASP:Menu控件作为表格布局。 CSS友好控制适配器将使ASP.NET生成ASP:菜单控件,作为div内的UL/LI布局。
这将允许轻松整合jQuery和Superfish插件,因为Superfish插件依赖于UL/LI布局。
记得为NonLink元素添加css类。 Superfish的CSS元素不适合他们。如果你像我一样,并且拥有不是链接的根菜单,那么它会渲染可怕。只需将AspNet-Menu-NonLink元素添加到superfish.css文件中,它就可以很好地呈现出来。
太棒了!自从首先提出这个问题以来,我一直在寻找答案。 – 2009-03-15 15:44:14