2012-07-20 68 views
1

我试图用剃刀迭代通过多节点选取器。我的小部件的别名是“venuesPicker”。我收到错误,“无法加载宏文件”。这是我到目前为止:Umbraco剃刀 - 迭代通过多节点选取器

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

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

这有帮助吗? – 2012-07-24 11:12:44

回答

6

查看我的回答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> 
} 
0

您可以使用uQuery.getNodesByCSV或uQuery.getMediaByCSV。 uQuery加入一把umbraco核心的4.9,我认为,否则,你可以安装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