2013-04-11 81 views
2

Umbraco版本= 6.0.3Umbraco從宏腳本查詢?

我想在宏腳本中做一些看似簡單的東西。基本上,我想遍歷所有可見的子內容,這不是一個類別:

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

如果我拿出的where子句中的「可見」部分,它工作正常(與顯示內容除外標記爲隱藏)。我也可以通過刪除「DocumentTypeAlias」來自行使用「可見」,但會顯示所有可見的內容,包括類別。

我也嘗試過使用強類型查詢@Model.Content.Children.Where(x => x.IsVisible() && x.DocumentTypeAlias != "Category")但我得到一個關於不能使用帶動態類型內容的lambda函數的錯誤。

想法?

回答

6

兩件事情:

  • DynamicNodeWhere子句使用參數的語法。
  • 使用NodeTypeAlias檢查文檔類型。

例子:

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

這裏有幾個一把umbraco剃刀資源:

+1

也剛剛發現在腳本文件中使用CurrentModel vs Model使其強制類型化,以便我可以執行lambdas – Sam 2013-04-11 18:58:51