Umbraco 7.12:如果X匹配当前页面ID,或当前页面的任何后代-是否可以?

时间:2018-09-12 22:06:06

标签: razor umbraco umbraco7

把这个代码片段放在一起:

@foreach(var item in selection){
    if(item.HasValue("location") && @Model.Content.Id == @item.GetPropertyValue<int>("location")){
var singleLink = item.GetPropertyValue<Link>("links");
    if(singleLink != null)
    {
        if(item.HasValue("wideImage"))
            {  
            IPublishedContent mediaItem = item.GetPropertyValue<IPublishedContent>("wideImage");
               <div class="owl-item" style="width: 891px;"><a href="@singleLink.Url" target="@singleLink.Target"><img class="tag-headadvert img-responsive" style="display: inline;" src="@mediaItem.Url" width="100%" alt="@singleLink.Name" /></a></div> 
            }
    }
}

在第二行中,您可以看到我将当前页面ID与变量进行比较,如果该变量与当前页面ID或当前页面ID的任何后代相匹配,该怎么办? / p>

谢谢

1 个答案:

答案 0 :(得分:2)

您需要检索后代ID列表-一种最简单的方法是从Model.Content.DescendantsOrSelf()中选择ID,例如:

var descendantIds = Model.Content.DescendantsOrSelf().Select(c => c.Id);

然后,您可以在第二行中使用descendantIds.Contains(@item.GetPropertyValue<int>("location"))

注意:如果当前节点有大量后代,则可能会发现您需要以某种方式优化查询,也许使用缓存或以完全不同的方式来获得所需的结果。