MVC Sitemap Provider - DynamicNodeProvider приводит к исчезновению хлебных крошек - PullRequest
2 голосов
/ 20 июня 2011

Я пытаюсь использовать MvcSiteMapProvider из http://mvcsitemap.codeplex.com/ для создания цепочки для моего сайта. У меня есть несколько страниц, которые требуют, чтобы идентификатор был передан в URL, поэтому я пытаюсь использовать динамические узлы для достижения этой цели. Тем не менее, для всех узлов, которые я объявляю динамическими, на соответствующей странице не появляются хлебные крошки Я также получаю интересную ошибку при отладке с точкой останова в моем классе DynamicNodeProvider. Вот базовая версия класса и узел карты сайта:

public class UserSummaryDynamicNodeProvider : DynamicNodeProviderBase
{
    private static ServiceClient proxy = new ServiceClient();
    List<User> users = proxy.GetUsers();

    public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
    {
        var nodes = new List<DynamicNode>();

        foreach (var user in users)
        {
            DynamicNode node = new DynamicNode();
            node.Key = "UserSummary";
            node.ParentKey = "UserMenu";
            node.RouteValues.Add("userID", user.ID);

            nodes.Add(node);
        }

        return nodes;
    }
}


<?xml version="1.0" encoding="utf-8" ?>
<mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0" enableLocalizatoin="true">
    <mvcSiteMapNode title="Home"  controller="Home" action="Index">
        <mvcSiteMapNode title="User Menu" controller="UserInfo" action="UserMenu">
            <mvcSiteMapNode title="User Summary" controller="UserInfo" action="UserSummary" dynamicNodeProvider="MySite.Users.DynamicNodeProviders.UserSummaryDynamicNodeProvider, MySite.Users" />
        </mvcSiteMapNode>
    </mvcSiteMapNode>
</mvcSiteMap>

Я получаю сообщение об ошибке «Нет доступного источника» и, похоже, ищет определенный исходный файл C # (MvcSiteMapNode.cs) в месте, которое я не указал (c: \ Projects \ Codeplex \ TFS10 \ mvcsitemap \ Branches \ 3.1.0 \ SRC \ MvcSiteMapProvider \ MvcSiteMapProvider). Я скачал dll с сайта codeplex, и этот класс включен в библиотеку, но исходные файлы не включены в загрузку по отдельности. Я включил соответствующие ссылки на сборки (как MvcSiteMapProvider, так и MvcSiteMapProvider.Extensibility). Я что-то упускаю здесь очевидное?

Возможно, это не единственная моя проблема. Прежде чем пытаться использовать динамические узлы, я пытался добавить атрибут [SiteMapPreserveRouteData] в мои результаты действий, но это тоже не сработало. В этом случае хлебная крошка все еще появляется, но ни один из параметров ID в маршруте не сохраняется. Есть идеи, почему это не сработает? Просто чтобы уточнить, я использую MVC3 и .NET 4.0

Пожалуйста, дайте мне знать, если мне нужно предоставить больше информации.

1 Ответ

0 голосов
/ 12 июля 2011

Как уже упоминалось в CodePlex: попробуйте последнюю ветку 3.1.0, которая должна это исправить.

...