我试图使用DynamicNodeProvider基地动态创建我的网站地图,我收到以下错误父节点配对。检查你的父母密钥以确保在SiteMap中存在具有相应密钥的节点。请注意,该匹配区分大小写。mvcsitemapprovider不是所有配置的节点可以与
SiteMapCacheKey: '网站地图://本地主机/'
的孤儿节点:
ParentKey: '产品' |控制器:'产品'|行动:'产品'|区域:''|网址:'/ Products/Product/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;
}
}
}
我已经在教程和无法找到与父节点什么。任何援助将不胜感激。
非常感谢一吨。标记为已回答。 –