Umbraco AncestorOrSelf(int) - 它做什么?

Chr*_*row 14 umbraco

使用时:

@Model.AncestorOrSelf(3)
Run Code Online (Sandbox Code Playgroud)

在Umbraco的.cshtml模板中,这可能会将节点遍历限制为3个级别.这是正确的,如果是这样,任何人都可以确认当前节点的索引是否为零?

Sid*_*dey 32

@Model.AncestorOrSelf(3)
Run Code Online (Sandbox Code Playgroud)

Model.Content是我们当前的页面.AncestorsOrSelf是这个页面在树中的所有祖先.(等级)意味着:上升到1/2/3/...并且当你到达那里时停止寻找更多的祖先.

以上是您对Umbraco 7.x rc版本的评论.

以下面的内容树为例,类似于您在umbraco管理区域的内容部分中通常看到的内容树:

每个内容文档都有一个级别,默认情况下它以1开头.

在Umbraco的.cshtml模板中,这可能会将节点遍历限制为3个级别

正如您在下面的示例中所看到的,级别开始增加 - 级别+ 1.因此,它从1开始,然后继续向子级别添加1.

- Content
 -- Home (level = 1)
   -- About Us (level = 2)
   -- Contact Us (level = 2)
   -- News Area (level = 2)
     -- News Item 1 (level = 3)
     -- News Item 2 (level = 3)
 -- Other Node (level = 1)
Run Code Online (Sandbox Code Playgroud)

因此,当您提到3作为AncestorOrSelf的参数时,您要求从当前元素移动到树中的第3级,可以是任何文档/部分视图,并在找到它时停止查找更多的祖先.

AncestorOrSelf(level) 返回单个项目,如果是DynamicPublishContent类型,即您可以访问许多属性,如id,name,url等.

@CurrentPage.AncestorOrSelf(1)
// based on content structure above, the above statement will give you an item - Home.
Run Code Online (Sandbox Code Playgroud)

它基本上是按级别获取祖先,无论你当前的级别或currentpage对象是什么.

例如,如果要在主布局中创建导航以便在网站的所有页面上共享它,您将在模板中执行以下操作:

<ul>
 @foreach(var page in @CurrentPage.AncestorOrSelf(1).Children)
 {
   <li><a href="@page.Url">@page.Name</a></li>
 }
</ul>
Run Code Online (Sandbox Code Playgroud)

根据我们的示例,它将为您提供:

关于我们,联系我们,新闻区(以列表形式和适当的链接)

  • 你是对的,抱歉.我在工作中一直在研究v6,正在查看备忘单.v7确实使用单数.我很抱歉. (2认同)