Umbraco Razor - 遍历多节点选择器

时间:2012-07-20 16:02:22

标签: razor umbraco loops

我正在尝试用剃刀迭代多节点选择器。我的小部件的别名是“场地选择器”。我收到错误,“无法加载宏文件。”这是我到目前为止所做的:

<umbraco:Macro runat="server" language="cshtml">
@{
    using uComponents.Core;
    using uComponents.Core.uQueryExtensions;

    foreach (var x in Model.venuesPicker)
    {
        @x.highlightTitle
    }
}
</umbraco:Macro>

2 个答案:

答案 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>
}

further info on Umbraco forum