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

问题描述 投票:0回答:1

把这个片段放在一起:

@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的任何后代?

谢谢

razor umbraco umbraco7
1个回答
2
投票

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

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

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

注意:如果您有大量后代到当前节点,您可能会发现您需要以某种方式优化查询,可能使用缓存或提出一种完全不同的方式来实现您想要的结果。

© www.soinside.com 2019 - 2024. All rights reserved.