2013-04-11 4 views
2

Umbraco Version = 6.0.3Umbraco Querying из Macro Script?

Я пытаюсь сделать некоторые, казалось бы, простые вещи в макросрипте скрипта. В принципе, я хочу, чтобы перебрать все видимое содержание ребенка, который не является категория:

@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> 
} 

Если я вынимаю «видимые» части, где положения, он работает правильно (за исключением отображения контента помечены как скрытые). Я также могу использовать «Видимый» самостоятельно, удалив «DocumentTypeAlias», но затем отображается все видимое содержимое, включая категории.

Я также пытался использовать строго типизированные запросы @Model.Content.Children.Where(x => x.IsVisible() && x.DocumentTypeAlias != "Category"), но я получаю сообщение об отсутствии возможности использования лямбда-функций с динамически типизированным контентом.

Идеи?

ответ

6

Две вещи:

  • DynamicNodeWhere пункт использует синтаксис параметров.
  • Используйте для проверки тип документа NodeTypeAlias.

Пример:

var subs = Model.Children.Where("Visible && NodeTypeAlias != @0", "Category"); 

Вот несколько Umbraco бритвенных ресурсы:

+1

Также, только что найденный с использованием CurrentModel vs Model в файле сценариев делает его строго типизированным, так что я могу делать lambdas – Sam

Смежные вопросы