我在以前的 Umbraco 版本(即 5)中看到了一些示例,其中这似乎相对简单。例如,请参阅此 stackoverflow 问题。
理论是我可以在选择要使用的节点时使用属性HasAccess
或IsProtected
节点,或方法。WhereHasAccess
我到目前为止的代码是:
var nodes = @CurrentPage.AncestorsOrSelf(1).First().Children;
这让我得到了页面列表,没问题。但是,我正在努力过滤页面列表,以便登录用户只能看到他们有权访问的内容,而公共访问者看不到受保护的页面。
V5 代码表明这是可能的:
var nodes = @CurrentPage.AncestorsOrSelf(1).First().Children.WhereCanAccess();
但这会导致错误:
'Umbraco.Web.Models.DynamicPublishedContentList' does not contain a definition for 'WhereCanAccess'
Umbraco的 Razor 备忘单的最新发布版本表明HasAccess()
和IsProtected()
是两种可用的方法,但是当使用其中任何一种时,我得到空值,例如:
@foreach(var node in nodes.WhereCanAccess()) {
<li>@node.Name / @node.IsProtected / @node.IsProtected() / @node.HasAccess() / @node.HasAccess </li>
}
为所有测试值返回 null(例如@node.IsProtected
)。
似乎我想要实现的目标很简单,但我以错误的方式接近它。有人请指出我的方式的错误!