2011-01-11 7 views
5

Я схожу с ума, пытаясь понять, почему я не могу заставить ASP.NET MVCSiteMap работать.ASP.NET MVC SiteMap

Я загрузил последнюю версию CodePlex (версия 2.3) и установил ссылки, как указано на CodePlex. Я скачал DisplayTemplates и настроить базовый Mvc.sitemap файл:

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

При использовании HTML Helper для создания основного меню, я получаю пустой вывод:

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

В MenuHelperModel.ascx DisplayTemplate, я вывод числа узлов:

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

Полученный выход:

0 

Я не могу понять, что я делаю неправильно. Я не получаю никаких ошибок, и я использую файл Mvc.sitemap, предоставленный сайтом проекта CodePlex, с некоторыми незначительными изменениями для моих действий/контроллеров.

ПРИМЕЧАНИЕ. Я также загрузил образец проекта, но он не будет компилироваться для меня, и используемый файл sitemap слишком сложный для меня, чтобы понять на этом раннем этапе мое понимание того, как это использовать.

Любая помощь очень ценится.

ответ

1

Версия 2.3 готова для MVC3. Я перекомпилировал свежий источник, если бы добавить ссылку на MVC2 сборки, изменить две строки коды, пока я не имел рабочий MvcSitemap.dll

В вашем Mvc.sitemap я должен был изменить пространство имен:

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

(обратите внимание на -3.0 в конце вместо -2.0, в последней версии он -4,0 в конце)

И убедитесь, что имя контроллера соответствует контроллеру, где вы тестируете в противном случае механизм безопасности не позволит ничего показывать.

Обратите внимание: проект переместился в Github, пространство имен по-прежнему ссылается на codeplex.com.

0

У меня была такая же проблема - количество узлов 0. Я нашел решение для своей проблемы, надеюсь, вам это поможет.

В App_Start -> RouteConfig.cs я имел:

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

я удалил namespaces: new string[] { "Mvc4AppNamespace.Controllers" } и он работал. В моем случае проблема была в пространствах имен.

Смежные вопросы