有效的方法让节点X级别深入

时间:2011-12-01 14:48:35

标签: dataset umbraco webforms

我有一个4级深度节点结构,其中最高级别由1个根节点组成。

我想要做的是获取某个属性为真的第4级中的所有节点,例如:

获取nodePropertyX == true的所有第4级节点。

现在,我可以使用for-each循环执行此操作,并迭代上面级别中的所有项目,但我觉得它效率低下。

  1. 如何以更有效的方式实现目标?有没有办法可以缓存我的数据集? (我将结果作为数据表返回)?

  2. 什么是首选方法:使用C#control(.ascx)或razor脚本(.cshtml)?

1 个答案:

答案 0 :(得分:0)

根据您对这些节点的处理方式,您可以使用 razor 以及宏的内置缓存功能缓存输出宏

以下是如何从根节点获取第4级的所有节点,其属性 nodePropertyX 等于

@foreach (var item in @Model.AncestorOrSelf().Descendants()
    .Where("Visible")
    .Where("level=4")
    .Where("nodePropertyX == \"value\""))
{
    <a href="@item.Url">@item.Name</a>
}

将此代码放在脚本文件(部分开发人员,节点脚本文件)中,使用此脚本文件创建宏,然后插入任何地方(在任何模板上)的宏都要显示那些节点的列表。

缓存宏的输出,请选择宏并设置相应的属性(缓存期按页缓存缓存个性化)。