使用时:
@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)
根据我们的示例,它将为您提供:
关于我们,联系我们,新闻区(以列表形式和适当的链接)