2013-04-11 3 views
2

움 브라 코 버전 = 6.0.3매크로 스크립트에서 Umbraco 쿼리?

매크로 렛트 렛에 겉으로보기에 간단한 것을하려고합니다. 기본적으로,이 범주 아닌 그 가시의 아이의 모든 콘텐츠를 통해 루프를 원하는 : 나는 where 절의 "표시"부분을 가지고가는 경우에

@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"를 제거하여 "Visible"을 자체적으로 사용할 수도 있지만 범주를 포함한 모든 보이는 내용이 표시됩니다.

또한 강력하게 형식화 된 쿼리 @Model.Content.Children.Where(x => x.IsVisible() && x.DocumentTypeAlias != "Category")을 사용하여 시도했지만 동적으로 입력 된 내용으로 람다 함수를 사용할 수 없다는 오류가 발생합니다.

아이디어가 있으십니까?

답변

6

두 가지 다음 DynamicNodeWhere 절 매개 변수 구문을 사용

  • .
  • NodeTypeAlias을 사용하여 문서 유형을 확인하십시오.

예 :

  • Umbraco 4.7 Razor Feature Walkthrough : 여기

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

    몇 Umbraco 면도기 자원입니다. 8 부작으로 구성된 시리즈이며 꽤 유익합니다. 버전 참조로 연기하지 마십시오. 여전히 Umbraco 6에는 유효합니다.

  • Razor DynamicNode Cheat Sheet.
+1

또한 스크립트 파일 내에서 CurrentModel과 Model을 사용하여 찾을 수 있으므로 강력하게 입력하여 람다를 만들 수 있습니다. – Sam

관련 문제