【发布时间】:2014-07-07 13:17:25
【问题描述】:
我在以前的 Umbraco 版本(即 5)中看到了一些示例,这些示例似乎相对简单。例如,请参阅this stackoverflow question。
理论上,我可以在节点上使用属性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'
Razor cheatsheet for Umbraco 的最新发布版本表明 HasAccess() 和 IsProtected() 是两种都可用的方法,但是当使用其中任何一种时,我得到空值,例如:
@foreach(var node in nodes.WhereCanAccess()) {
<li>@node.Name / @node.IsProtected / @node.IsProtected() / @node.HasAccess() / @node.HasAccess </li>
}
为所有测试值返回 null(例如 @node.IsProtected)。
似乎我想要实现的目标很简单,但我以错误的方式接近它。有人请指出我的方法的错误!
【问题讨论】: