asp.net - vertical - superfish wp




jQuery-Menü und ASP.NET-Sitemap (4)

Ist es möglich, eine ASP.NET web.sitemap mit einem jQuery Superfish- Menü zu verwenden?

Wenn nicht, gibt es irgendwelche standardbasierten browser-agnostischen Plugins, die mit der web.sitemap-Datei funktionieren?


Das SiteMapDataSource-Steuerelement sollte in der Lage sein, an ein beliebiges hierarchisches datengebundenes Steuerelement zu binden. Ich kenne mich nicht mit Superfischen aus, aber ich weiß, dass es viele jQueryish-Kontrollen gibt, um das zu tun.


Es sieht so aus, als müssten Sie einen UL für Superfish generieren. Sie sollten dies mit ASP.Net von Ihrer Site Map aus tun können. Ich denke, die Kontrolle über die Site-Map wird so etwas tun. Wenn nicht, sollte es ziemlich trivial sein, die Sitemap direkt aus C # aufzurufen und das DOM programmgesteuert zu generieren. Sie könnten ein Benutzersteuerelement erstellen, um dies zu tun, oder es in der Masterseite tun.

Überprüfen Sie diesen MSDN-Artikel zum programmgesteuerten Aufzählen der Knoten in Ihrer Sitemap.


Ich habe diese Frage auf der Suche nach der gleichen Antwort gefunden ... jeder sagt, dass es möglich ist, aber niemand gibt die wirkliche Lösung! Ich scheine es jetzt zu haben, also dachte ich, ich würde meine Ergebnisse veröffentlichen ...

Dinge, die ich brauchte:

Mein fertiger Masterpage.master hat den folgenden head Tag:

<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>

Das ist im Grunde alles was das jQuery Superfish Menü benötigt um zu funktionieren. Innerhalb der Seite (wo das Menü geht) sieht wie folgt aus (basierend auf diesen Anweisungen ):

<asp:SiteMapDataSource ID="SiteMapDataSource" runat="server"
    ShowStartingNode="false" />
<asp:Menu ID="Menu1" runat="server" 
    DataSourceID="SiteMapDataSource"
    Orientation="Horizontal" CssClass="sf-menu">
</asp:Menu>

Basierend auf der Dokumentation scheint dies so, wie es funktionieren sollte - aber es tut es nicht. Der Grund dafür ist, dass das CssClass="sf-menu" überschrieben wird, wenn das Menü gerendert wird und das <ul> -Tag ein class="AspNet-Menu" bekommt. Ich dachte die Zeile $('ul.AspNet-Menu').superfish(); würde helfen, aber es tat es nicht.

EINE SACHE NOCH

Obwohl es ein Hack ist (und bitte jemand mich auf die richtige Lösung hinweisen) konnte ich es durch Öffnen der superfish.css Datei und Suche und Ersetzen von sf-Menü mit AspNet-Menü ... und voila! Das Menü erschien. Ich dachte, es gäbe eine Konfigurationseinstellung im asp:Menu Steuerelement, wo ich die <ul> -Klasse einstellen könnte, aber keine Hinweise über Google gefunden habe.


Denken Sie daran, CSS-Klassen für NonLink-Elemente hinzuzufügen. Superfish-CSS-Elemente unterstützen sie nicht. Und wenn Sie wie ich sind und Root-Menüs haben, die keine Links sind, dann rendert es schrecklich. Fügen Sie einfach die AspNet-Menu-NonLink-Elemente zur superfish.css-Datei hinzu.







superfish