Domanda

È possibile utilizzare un ASP.NET web.sitemap con un jQuery < a href = "http://users.tpg.com.au/j_birch/plugins/superfish/" rel = "noreferrer"> Superfish menu?

In caso contrario, sono disponibili plug-in agnostici basati su standard che funzionano con il file web.sitemap?

È stato utile?

Soluzione

Ho trovato questa domanda mentre cercavo la stessa risposta ... tutti dicono è possibile ma nessuno offre la soluzione reale! Mi sembra che funzioni ora, quindi ho pensato di pubblicare i miei risultati ...

Cose di cui avevo bisogno:

Il mio Masterpage.master finito ha il seguente 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>

Che è fondamentalmente tutto ciò che è necessario per far funzionare il menu Superfish di jQuery. All'interno della pagina (dove va il menu) appare così (basato su queste istruzioni ):

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

Sulla base della documentazione, sembra che DOVREBBE funzionare, ma non funziona. Il motivo è che CssClass="sf-menu" viene sovrascritto quando viene visualizzato il menu e il tag <ul> ottiene un class="AspNet-Menu". Ho pensato che la linea $('ul.AspNet-Menu').superfish(); sarebbe stata d'aiuto, ma non è stato così.

UN ALTRO COSA

Sebbene sia un hack (e per favore qualcuno mi indichi la soluzione corretta) sono stato in grado di farlo funzionare aprendo il superfish.css file e cerca e sostituendo sf-menu con Menu AspNet ... e voilà! apparve il menu. Ho pensato che ci sarebbe stata qualche impostazione di configurazione nel controllo asp:Menu in cui avrei potuto impostare la classe <=> ma non ho trovato alcun suggerimento tramite Google.

Altri suggerimenti

Sì, è totalmente possibile.

L'ho usato con ASP: menu control e jQuery 1.2.6 con il plugin Superfish. Nota, avrai bisogno di ASP.NET 2.0 CSS Friendly Adapter Adapters .

ASP.NET genera il controllo ASP: Menu come layout di tabella. Il CSS Friendly Control Adapter farà in modo che ASP.NET generi ASP: controllo del menu come layout UL / LI all'interno di un div.

Ciò consentirà una facile integrazione del plugin jQuery e Superfish perché il plugin Superfish si basa su un layout UL / LI.

Sembra che tu debba generare un UL per Superfish. Dovresti essere in grado di farlo con ASP.Net dalla tua mappa del sito. Penso che il controllo della mappa del sito farà qualcosa del genere. In caso contrario, dovrebbe essere piuttosto banale chiamare la mappa del sito direttamente da C # e generare il DOM a livello di codice. È possibile creare un controllo utente per farlo o farlo nella pagina principale.

Consulta questo articolo MSDN su come elencare a livello di codice il nodi nella mappa del tuo sito.

Ricorda di aggiungere classi css per gli elementi NonLink. Gli elementi CSS di Superfish non li soddisfano. E se sei come me e hai dei menu di root che non sono link, allora diventa orribilmente. Basta aggiungere elementi AspNet-Menu-NonLink al file superfish.css e dovrebbe essere visualizzato correttamente.

Il controllo SiteMapDataSource dovrebbe essere in grado di associarsi a qualsiasi controllo gerarchico associato ai dati. Non ho familiarità con superfish ma so che ci sono molti controlli jQueryish là fuori per farlo.

Ho creato un piccolo esempio di progetto che puoi utilizzare su http://simplesitemenu.codeplex.com/

È un controllo composito che genera un elenco UL / LI nidificato dalla tua Sitemap.

Enjoy!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top