C# Umbraco-使用pageId获取页面元素

C# Umbraco-使用pageId获取页面元素,c#,razor,umbraco,C#,Razor,Umbraco,我使用的是Umbraco 6.0.1,我创建了两个页面第一个是页面元素,如页眉、正文等。 我已经创建了另一个页面,我希望在第一个页面中使用页面元素,它们之间没有任何父子关系。 那么,是否可以将另一个页面的页面元素放入Umbraco的页面中?看起来可能不是这样,但Umbraco中始终存在父子关系 为了解释,在内容结构中创建的每个节点都是在ID为-1的主节点下创建的。因此,所有节点都是该节点的子节点。即使您的两个节点位于两个看似独立的内容分支中,它们也始终是相关的 如果两个节点都是根节点,则可以从c

我使用的是Umbraco 6.0.1,我创建了两个页面第一个是页面元素,如页眉、正文等。 我已经创建了另一个页面,我希望在第一个页面中使用页面元素,它们之间没有任何父子关系。
那么,是否可以将另一个页面的页面元素放入Umbraco的页面中?

看起来可能不是这样,但Umbraco中始终存在父子关系

为了解释,在内容结构中创建的每个节点都是在ID为-1的主节点下创建的。因此,所有节点都是该节点的子节点。即使您的两个节点位于两个看似独立的内容分支中,它们也始终是相关的

如果两个节点都是根节点,则可以从cshtml视图中访问所有根节点,如下所示:

@Umbraco.TypedContentAtRoot()
然后,您可以像这样穿过它们:

@{
    var rootNodes = Umbraco.TypedContentAtRoot();

    var settingsNode = rootNodes.First(x => x.DocumentTypeAlias == "Settings");
    var homeNode = rootNodes.First(x => x.DocumentTypeAlias == "Homepage");
}
然后,可以访问这些节点上的属性并在视图中显示它们


最后,这些信息中的大部分都可以在这里找到,这是一个很好的地方,可以让您熟悉这些信息是如何组合在一起的。

是的,我们可以在上面的评论中提到的无关系页面中找到这些信息 还针对页面属性

var currentDoc = new umbraco.cms.businesslogic.web.Document(PageId);

umbraco.cms.businesslogic.property.Property prop = currentDoc.getProperty( "MY_PROPERTY" );

感谢您的快速回复,但我无法管理这些关系,因此我找到了通过pageId umbraco.cms.businesslogic.web.Document currentDoc=new umbraco.cms.businesslogic.web.Document(pageId)获取页面的解决方案;umbraco.cms.businesslogic.property.property prop=currentDoc.getProperty(“我的财产”);这种方法有两个问题:1)只有知道页面ID并且页面是永久性的,才可以。基于CMS的网站的问题是页面被删除和替换。2) 它对数据库进行多次调用—一次用于检索文档,至少一次用于检索属性。更好的解决方案是使用查询XML缓存的方法。请参阅我的答案和/或Umbraco文档。是的,您提出的问题是正确的,但是如果我们能够管理页面名称,那么我们还可以通过使用页面名称///uQuery.GetNodesByName(pageName)///来获取pageId。基本上,我们在多语言网站上工作,因此每种语言都有单独的根节点。在数据库调用的情况下,是的,您的解决方案将是最好的。。。谢谢