2011-01-11 23 views
5

Me he estado volviendo loco tratando de descubrir por qué no puedo hacer funcionar el ASP.NET MVCSiteMap.ASP.NET MVC SiteMap

He descargado la última versión de CodePlex (versión 2.3) y configuré las referencias como se describe en CodePlex. He descargado los DisplayTemplates y configurar un archivo de Mvc.sitemap básica:

<?xml version="1.0" encoding="utf-8" ?> 
<mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-2.0" enableLocalization="true"> 
    <mvcSiteMapNode title="Dashboard" controller="Admin" action="Index" changeFrequency="Always" updatePriority="Normal"> 
     <mvcSiteMapNode title="Users" controller="Users" action="Index" /> 
     <mvcSiteMapNode title="Reports" controller="Reports" action="Index" /> 
    </mvcSiteMapNode> 
</mvcSiteMap> 

Cuando se utiliza el asistente de HTML para generar un menú básico, aparece un espacio en blanco de salida:

<%: Html.MvcSiteMap().Menu() %> 

En el MenuHelperModel.ascx DisplayTemplate, estoy emitiendo el número de nodos:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl`1[ [MvcSiteMapProvider.Web.Html.Models.MenuHelperModel,MvcSiteMapProvider] ]" %> 
<%@ Import Namespace="System.Web.Mvc.Html" %> 
<%@ Import Namespace="MvcSiteMapProvider.Web.Html.Models" %> 

<%: Model.Nodes.Count %> 

<ul> 
<% foreach (var node in Model.Nodes) { %> 
    <li><%=Html.DisplayFor(m => node)%> 
    <% if (node.Children.Any()) { %> 
     <%=Html.DisplayFor(m => node.Children)%> 
    <% } %> 
    </li> 
<% } %> 
</ul> 

la salida resultante es:

0 

No puedo entender lo que estoy haciendo mal. No recibo ningún error, y estoy usando el archivo Mvc.sitemap proporcionado por el sitio del proyecto CodePlex con algunas modificaciones menores para mis acciones/controladores.

NOTA: También he descargado el proyecto de muestra, pero no compilará para mí y el archivo de sitemap que se está utilizando es demasiado complicado para mí en esta etapa temprana de mi comprensión de cómo usarlo.

Cualquier ayuda es muy apreciada.

Respuesta

1

La versión 2.3 está lista para MVC3. Me vuelve a compilar la fuente fresca, tenían el añadir una referencia a las asambleas MVC2, cambiar dos líneas de código hasta que tuve un trabajo MvcSitemap.dll

En su Mvc.sitemap que tenía que cambiar el espacio de nombres para:

http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0

(nota del -3,0 al final en lugar de -2.0, en la última versión es -4.0 en el final)

y asegúrese de que el nombre del controlador coincide con un controlador en el que prueba de lo contrario el mecanismo de seguridad evitará que se muestre algo.

Tenga en cuenta que el proyecto se ha movido a Github el espacio de nombres sigue haciendo referencia a codeplex.com.

0

Tuve el mismo problema: los nodos cuentan 0. Encontré una solución para mi problema, espero que te sirva de ayuda.

En App_Start -> RouteConfig.cs que tenían:

routes.MapRoute("Robots.txt", 
      "robots.txt", 
      new { controller = "Home", action = "Robots" }, 
      namespaces: new string[] { "Mvc4AppNamespace.Controllers" }); 

Quité namespaces: new string[] { "Mvc4AppNamespace.Controllers" } y funcionó. En mi caso, el problema era con espacios de nombres.