asp.net - dinamico - mvc menu roles
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
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
ysiteMap
entrada de proveedor desiteMap
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!