我正在尝试用剃刀迭代多节点选择器。我的小部件的别名是“场地选择器”。我收到错误,“无法加载宏文件。”这是我到目前为止所做的:
<umbraco:Macro runat="server" language="cshtml">
@{
using uComponents.Core;
using uComponents.Core.uQueryExtensions;
foreach (var x in Model.venuesPicker)
{
@x.highlightTitle
}
}
</umbraco:Macro>
答案 0 :(得分:7)
查看我对此our.umbraco.org forum post的回答。基本上,根据MNTP是使用XML还是CSV,您可以执行以下操作之一:
<强> CSV:强>
@using umbraco.MacroEngines
@inherits DynamicNodeContext
@if (Model.HasValue("venuesPicker"))
{
string[] ids = Model.venuesPicker.Split(',');
<ul>
@foreach (string id in ids)
{
var node = Library.NodeById(id);
if (node.Id != 0)
{
// If node exists:
<li><a href="@node.Url">@node.Name</a></li>
}
}
</ul>
}
<强> XML:强>
@using umbraco.MacroEngines
@inherits DynamicNodeContext
@if (Model.HasValue("venuesPicker"))
{
<ul>
@foreach (var item in Model.venuesPicker)
{
var node = Library.NodeById(item.InnerText);
if (node.Id != 0)
{
// If node exists:
<li><a href="@node.Url">@node.Name</a></li>
}
}
</ul>
}
答案 1 :(得分:0)
您也可以使用uQuery.getNodesByCSV或uQuery.getMediaByCSV。 uQuery在4.9中被添加到Umbraco核心,我认为,否则你可以安装uComponents包
所以例如我在4.9.1中有这样的东西来循环一些媒体
@using umbraco.MacroEngines
@using umbraco.cms.businesslogic.media
@inherits umbraco.MacroEngines.DynamicNodeContext
@{
<div class="slideshow">
@foreach (Media img in uQuery.GetMediaByCsv(Model.lightBoxImages))
{
<figure>
<a href="#">
<img src="@img.GetImageUrl()" />
</a>
</figure>
}
</div>
}