Umbraco从宏脚本查询?
问题描述:
Umbraco版本= 6.0.3Umbraco从宏脚本查询?
我想在宏脚本中做一些看似简单的东西。基本上,我想遍历所有可见的子内容,这不是一个类别:
@inherits umbraco.MacroEngines.DynamicNodeContext
@{
var subs = Model.Children.Where("Visible && DocumentTypeAlias != \"Category\"");
}
<span>Count: @subs.Count()</span>
@if (subs.Any())
{
<ul>
@foreach (var sub in subs)
{
<li>
<a href="@sub.Url">@sub.Name</a>
</li>
}
</ul>
}
如果我拿出的where子句中的“可见”部分,它工作正常(与显示内容除外标记为隐藏)。我也可以通过删除“DocumentTypeAlias”来自行使用“可见”,但会显示所有可见的内容,包括类别。
我也尝试过使用强类型查询@Model.Content.Children.Where(x => x.IsVisible() && x.DocumentTypeAlias != "Category")
但我得到一个关于不能使用带动态类型内容的lambda函数的错误。
想法?
答
两件事情:
- 的
DynamicNode
Where
子句使用参数的语法。 - 使用
NodeTypeAlias
检查文档类型。
例子:
var subs = Model.Children.Where("Visible && NodeTypeAlias != @0", "Category");
这里有几个一把umbraco剃刀资源:
- Umbraco 4.7 Razor Feature Walkthrough。这是一个由8部分组成的系列,它的内容非常丰富。不要被版本参考推迟,它仍然适用于Umbraco 6.
- Razor DynamicNode Cheat Sheet。
也刚刚发现在脚本文件中使用CurrentModel vs Model使其强制类型化,以便我可以执行lambdas – Sam 2013-04-11 18:58:51