我在 Umbraco 7.0.3 宏中遇到错误,该宏遍历所有子项并仅返回一个列表。首先,我使用 Umbraco 后台来构建基本的导航和侧菜单项。同时,一旦设置了本地环境,我就开始在本地工作。
问题是,我使用后台导航构建的代码工作正常,但如果项目是在 VS2012 Ultimate 版本中创建的,则相同的代码不起作用,即使我只是从原始工作导航宏中粘贴相同的代码。
我收到以下错误:“Umbraco.Web.Models.DynamicPublishedContentList”不包含“任何”的定义,表明页面列表是动态的。有趣的是,相同的代码适用于现有导航,那么为什么不使用新项目呢?VS2012 中是否有任何设置将文件标记为无法使用 UTF8 编辑器或无效的 html?
我的问题是如何在剃刀宏中找到计数或任何项目?我已经尝试过 Enumerable items count 和任何方法,但没有用。
有关如何查找存在的项目数量的任何指示都会有所帮助。
我正在提供有关 Paulo 请求的更多信息。"startNode.Children.Where("Visible").Any()" 行出错。以下是宏代码:
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@*
=== Macro Parameters To Create ===
Show:True Alias:nodeId Name:Node ID Type:Content Picker
*@
@if (Model.MacroParameters["startNodeID"] != null)
{
@* Get the start node as a dynamic node *@
var startNode = Umbraco.Content(Model.MacroParameters["startNodeID"]);
if (startNode.Children.Where("Visible").Any())
{
<div class="container">
<div class="row">
@foreach (var page in startNode.Children.Where("Visible"))
{
<div class="col-sm-3 col-md-3">
<div class="thumbnail">
<img src="~/images/Tiles/300x200.jpg" alt="@page.Name">
<div class="caption">
<h3><a href="@page.Url">@page.Name</a></h3>
<p>@page.GetPropertyValue("summary").Substring(0, 100)</p>
<a href="@page.Url" class="btn btn-default">Read More</a>
</div>
</div>
</div>
}
</div>
</div>
}
}