Dataset 获取节点X级深度的有效方法
我有一个4层的深层节点结构,其中最顶层由1个根节点组成 我想做的是获取第四级中某个属性为真的所有节点,例如: 获取nodePropertyX==true的所有第四级节点 现在,我可以使用for-each循环来实现这一点,并迭代上面级别中的所有项,但我觉得这样做效率很低Dataset 获取节点X级深度的有效方法,dataset,umbraco,webforms,Dataset,Umbraco,Webforms,我有一个4层的深层节点结构,其中最顶层由1个根节点组成 我想做的是获取第四级中某个属性为真的所有节点,例如: 获取nodePropertyX==true的所有第四级节点 现在,我可以使用for-each循环来实现这一点,并迭代上面级别中的所有项,但我觉得这样做效率很低 我怎样才能以更好、更有效的方式来做呢?有没有办法缓存我的数据集?(我以数据表的形式返回结果) 首选的方法是什么:使用C#control(.ascx)或razor脚本(.cshtml) 根据您想对这些节点执行的操作,您可以使用raz
根据您想对这些节点执行的操作,您可以使用razor、宏和内置的宏缓存功能来缓存宏的输出: 下面介绍如何从具有等于value的属性nodePropertyX的根节点获取第4级的所有节点:
@foreach(@Model.AncestorOrSelf().subjections()中的变量项)
.何处(“可见”)
.其中(“4级”)
.Where(“nodePropertyX==\“value\”)
{
}
将此代码放在脚本文件(开发人员部分,节点脚本文件)中,使用此脚本文件创建宏,并将宏插入到要显示这些节点列表的任何位置(在任何模板上)
为了缓存宏的输出,请选择宏并设置适当的属性(缓存周期、按页缓存和缓存个性化)。这会扫描整个内容树(尽管已缓存)?您可以编写自己的递归方法,该方法不会扫描级别4以下的内容
@foreach (var item in @Model.AncestorOrSelf().Descendants()
.Where("Visible")
.Where("level=4")
.Where("nodePropertyX == \"value\""))
{
<a href="@item.Url">@item.Name</a>
}