2014-08-27 2 views
1

NuGet 및 VS2013을 사용하여 Umbraco 7.1.5를 설치했습니다.Umbraco 7 : foreach의 어린이 페이지에서 Umbraco.Field (' "이름) 가져 오기

var homePage = CurrentPage.AncestorsOrSelf(1).First(); 
var menuItems = homePage.Children.Where("UmbracoNaviHide == false"); 

<ul class="nav"> 
<li class="@(CurrentPage.Url == "/" ? "current_page_item" : null)"><a class="Lvl1 home" href="/">Home</a></li> 

@foreach (var item in menuItems) 
{  
    <li class="@(CurrentPage.Id == item.Id ? "current_page_item" : null) Col1"> 
    <a class="lvl1 parent" href="@item.Url">@item.Name</a> 

    @{var subMenuItems = item.Children.Where("UmbracoNaviHide == false");} 

    @if (subMenuItems.Count() > 0) 
    { 
     <ul> 
      @foreach (var sub in subMenuItems) 
      { 
       ???? @Umbraco.Field("menuItemImage", recursive: true) ????? 

       <li><a class="parent" href="@sub.Url">@sub.Name</a></li> 
      } 
     </ul> 
    } 
    </li> 
} 
</ul> 

Q : 나는 문서 트리를 얻고 그에 따라 메뉴를 채우는 MAINMENU 부분보기가 나는 @의 Umbraco.Field 얻을 수있는 방법 ("menuItemImage을"재귀 : TRUE) (업로드 형) 두 번째 foreach에있는 모든 하위 메뉴 항목마다?

답변

1

IPublishedContent 인터페이스에서 GetPropertyValue를 사용하십시오.

@foreach (var sub in subMenuItems) 
{ 
    // will only work if image is mandatory, otherwise the inner value can be null. 
    // In that case you need to add an extra check 
    var img = Umbraco.TypedMedia(sub.GetPropertyValue<string>("menuItemImage", recurse:true)) 
    <img src="@img.Url" alt="sub.Name" /> 
    <li><a class="parent" href="@sub.Url">@sub.Name</a></li> 
} 

업데이트

당신이 역학을 사용하고 있기 때문에 당신은 또한 @sub.menuItemImage을 할 수 있습니다. 역학이 너무 좋아서 대신 규칙적으로 Model.Content을 사용합니다. 그렇게하면 Model.Content이 강력하게 입력되기 때문에 Visual Studio에서 인텔리 센스를 받게됩니다.

+1

감사합니다. 또한 첫 번째 매개 변수로'sub'를 전달하면 작동합니다. @Umbraco.Field (sub, "menuItemImage", recursive : true)'url 문자열을 반환합니다. – alex

관련 문제