net mvc dinamico create codeproject bootstrap based asp asp.net jquery superfish

asp.net - dinamico - mvc menu roles



jQuery Menu y ASP.NET Sitemap (6)

¿Es posible utilizar un ASP.NET web.sitemap con un menú jQuery Superfish ?

De lo contrario, ¿hay disponibles complementos de navegador basados ​​en estándares que funcionen con el archivo web.sitemap?


El control SiteMapDataSource debe poder vincularse a cualquier control jerárquico vinculado a datos. No estoy familiarizado con superfish pero sé que hay muchos controles jQueryish para hacer esto.


Parece que necesita generar una UL para Superfish. Debería poder hacer esto con ASP.Net desde su mapa del sitio. Creo que el control del mapa del sitio hará algo como esto. De lo contrario, debería ser bastante trivial llamar al mapa del sitio directamente desde C # y generar el DOM mediante programación. Puede crear un control de usuario para hacer esto, o hacerlo en la página maestra.

Consulte este artículo de MSDN sobre cómo enumerar los nodos en su mapa de sitio.


Sí, es totalmente posible.

Lo he usado con ASP: control de menú y jQuery 1.2.6 con el complemento Superfish. Tenga en cuenta que necesitará los adaptadores de control amigables con CSS de ASP.NET 2.0 .

ASP.NET genera ASP: control de menú como un diseño de tabla. El adaptador de control amigable de CSS hará que ASP.NET genere el ASP: control de menú como un diseño UL / LI dentro de un div.

Esto permitirá una fácil integración del plugin jQuery y Superfish porque el plugin Superfish se basa en un diseño UL / LI.


Encontré esta pregunta mientras buscaba la misma respuesta ... ¡todos dicen que es posible, pero nadie da la solución real! Parece que lo tengo funcionando ahora, así que pensé en publicar mis hallazgos ...

Cosas que necesitaba

  • Superfish que también incluye una versión de jQuery

  • Los adaptadores de control compatibles con CSS descargan archivos DLL y .browsers (en las carpetas / bin y / App_Browsers, respectivamente)

  • ASP.NET SiteMap (un archivo XML siteMap y siteMap entrada de proveedor de siteMap en web.config)

Mi Masterpage.master terminado tiene la siguiente etiqueta principal:

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

Que es básicamente todo lo que se necesita para que el menú jQuery Superfish funcione. Dentro de la página (donde va el menú) se ve así (según estas instrucciones ):

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

Según la documentación, parece que DEBE funcionar, pero no es así. La razón es que CssClass="sf-menu" se sobrescribe cuando se representa el menú y la etiqueta <ul> obtiene una class="AspNet-Menu" . Pensé en la línea $(''ul.AspNet-Menu'').superfish(); ayudaría, pero no fue así.

UNA COSA MÁS

Aunque es un truco (y por favor, que alguien me indique la solución correcta) pude hacerlo funcionar abriendo el archivo superfish.css y buscando y reemplazando el menú de sf con AspNet-Menu ... ¡y listo! el menú apareció. Pensé que habría alguna configuración de configuración en el asp:Menu control de asp:Menu donde podría establecer la clase <ul> pero no encontré ninguna pista a través de google.


Recuerde agregar clases CSS para elementos NonLink. Los elementos de css Superfish no se ajustan a ellos. Y si eres como yo y tienes un menú raíz que no son enlaces, entonces rinde horriblemente. Simplemente agregue elementos AspNet-Menu-NonLink al archivo superfish.css y debería funcionar bien.


Creé un pequeño y prolijo proyecto de muestra que puedes usar en http://simplesitemenu.codeplex.com/

Es un control compuesto que genera una lista UL / LI anidada de su mapa del sitio.

¡Disfrutar!