ASP.NET MVC SiteMap - PullRequest
       21

ASP.NET MVC SiteMap

5 голосов
/ 11 января 2011

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

Я скачал последнюю версию с 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 для создания основного меню я получаю пустой вывод:

<%: 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, с некоторыми незначительными изменениями для моих действий / контроллеров.

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

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

Ответы [ 2 ]

1 голос
/ 21 января 2011

Версия 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 голосов
/ 30 января 2013

У меня была та же проблема - количество узлов 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" } и все заработало.В моем случае проблема была с пространствами имен.

...