我正在尝试使用 DynamicNodeProvider Base 动态创建我的站点地图,但我收到以下错误:
并非所有配置的节点都可以与父节点配对。检查您的父键以确保站点地图中存在具有相应键的节点。请注意,匹配区分大小写。
SiteMapCacheKey: 'sitemap://localhost/'
孤立节点:
父键:“产品”| 控制器:“产品”| 行动:“产品”| 区域:'' | URL: '/产品/产品/Product1' | 密钥:'05633af0-b362-411b-856b-5e16b8ed1fbd' | 来源:'company.infrastructure.ProductsDynamicNodeProvider,项目'
该错误显示了我所有产品的完整列表,因此我可以判断它正在尝试加载完整目录,但我在某处缺少配对。
这是我的 Mvc.sitemap
<mvcSiteMap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-4.0"
xsi:schemaLocation="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-4.0 MvcSiteMapSchema.xsd">
<mvcSiteMapNode title="Home" controller="Home" action="Index">
<mvcSiteMapNode title="Products" controller="Products" action="Index">
<mvcSiteMapNode title="Details" controller="Products" action="Product" dynamicNodeProvider="MWH2.infrastructure.ProductsDynamicNodeProvider, MWH2"/>
</mvcSiteMapNode>
<mvcSiteMapNode title="About" controller="Home" action="About"/>
<mvcSiteMapNode title="Careers" controller="Careers" action="Index"/>
<mvcSiteMapNode title="Literature" controller="Literature" action="Index"/>
<mvcSiteMapNode title="Locations" controller="Locations" action="Index"/>
<mvcSiteMapNode title="Customer Service" controller="Customers" action="Index"/>
</mvcSiteMapNode>
</mvcSiteMap>
ProductsDynamicNodeProvider.cs
public class ProductsDynamicNodeProvider : DynamicNodeProviderBase
{
public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode node)
{
ProductModel model = new ProductModel();
using (var prodDB = new MWH2Data())
{
model.Product = (from prod in prodDB.Products select prod).ToList();
}
foreach(var p in model.Product)
{
DynamicNode dynamicNode = new DynamicNode();
dynamicNode.Title = p.ProductName;
dynamicNode.ParentKey = "Product";
dynamicNode.RouteValues.Add("id", p.ProductCleanLink);
yield return dynamicNode;
}
}
}
我已经阅读了教程,找不到与父节点相关的任何内容。任何帮助将不胜感激。