Я пытаюсь использовать 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
Пожалуйста, дайте мне знать, если мне нужно предоставить больше информации.