我想动态更改父键。根据我的菜单导航,我有很多父节点。 一些例子是
1) Home>Profile>Quality Policy
2) Home>eServices>eService
我有两张桌子。在第一个我保留我的菜单。 MenuID,MenuTitle和另一个我存储我的内容。 ArticleID,ArticleTitle,ArticleContent,MenuID。
我需要动态更改父键。
这是我的班级
public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode node)
{
webdata storeDB = new webdata();
var returnValue = new List<DynamicNode>();
foreach (var article in storeDB.SiteContents)
{
DynamicNode enode = new DynamicNode();
enode.Title = article.ArticleTitle;
enode.ParentKey = "?";
//Specify Controller and Action name
enode.Controller = "SiteContents";
enode.Action = "ArticleDetails";
enode.RouteValues.Add("id", article.ArticleID);
enode.PreservedRouteParameters.Add("slug");
returnValue.Add(enode);
yield return enode;
}
}
我的站点地图文件
<mvcSiteMapNode title="Home" controller="Home" action="Index">
<mvcSiteMapNode controller="SiteContents" dynamicNodeProvider="Myproject.Models.ElkeDynamicNodeProvider, Myproject" />
</mvcSiteMapNode>
如何加入这两个表,以便将MenuTitle作为parentKey以及如何在正确的操作中链接它。 谢谢
答案 0 :(得分:1)
每个节点不可能有多个父节点或动态更改父键。
我不确定您到底想要实现的目标,但请注意,可以通过向该页面提供2个唯一网址并使用canonicalKey
或{{1}来multiple navigation paths to a page在其中一个上阻止搜索引擎惩罚你。
另请注意,您实际上可以使用数据库中主键和/或外键的变体来创建节点。因此,如果您在数据库中拥有关系,则可以基于相同的关系创建动态节点。
例如,如果canonicalUrl
表中有MenuID
(或者可以加入表以获得相应的Article
,则只需循环遍历每个表并创建一个基于MenuID
的键(例如MenuID
),用于菜单实体的键和文章实体的父键。每篇文章都有一个键MenuID1234
,它可以用作下一级别的父键。
ArticleID3456