把这个代码片段放在一起:
@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>
谢谢
答案 0 :(得分:2)
您需要检索后代ID列表-一种最简单的方法是从Model.Content.DescendantsOrSelf()
中选择ID,例如:
var descendantIds = Model.Content.DescendantsOrSelf().Select(c => c.Id);
然后,您可以在第二行中使用descendantIds.Contains(@item.GetPropertyValue<int>("location"))
。
注意:如果当前节点有大量后代,则可能会发现您需要以某种方式优化查询,也许使用缓存或以完全不同的方式来获得所需的结果。