2017-10-13 5 views
0

최근 모든 프로젝트에서 True/False 속성으로 umbracoNaviHide를 구현했으며 모두 제대로 작동합니다. 내 7.6.9 업그레이드 된 프로젝트에서 True/False 값을 얻지 못합니다.umbracoNaviHide가 새 프로젝트에서 작동하지 않습니다.

마스터 구성에서 True/False 속성과 함께 "탐색"탭이 있습니다. 모든 페이지는 해당 구성을 상속합니다. 내가 좋아하는 일을 할 때

:

var menuItems = CurrentPage.Site().Children; 

@foreach(var item in menuItems) { 
    if(item.IsVisible()) { 
     <!--show element--> 
    } 
} 

이 작동하지 않습니다. 그것은 내 모든 최신 프로젝트에서와 마찬가지로 작동합니다. 다음은 내가 시도한 내용입니다.

var menuItems = CurrentPage.Site().Children.Where("Visible"); 
var menuItems = CurrentPage.Site().Children.Where("umbracoNaviHide == false"); //setting this to true gives me no results 
var menuItems = CurrentPage.Site().Children.Where(x => x.IsVisible()); 
var menuItems = CurrentPage.Site().Children.Where("randomProperty == false"); //or true 

foreach(var item in menuItems) { 
    if(!item.HasValue("umbracoNaviHide)) { <!-- show item --> } 
    if(item.GetPropertyValue("umbracoNaviHide")) == "false") { <!-- show item --> } 
} 

나는 그렇게 생각합니다. ModelsBuilder를 업데이트했습니다. 나는 프로젝트를 다시 시작했다. 나는 속성을 제거하고 그것을 읽었습니다. 기본적으로 모든 것을 시도했지만 작동하지 않습니다.

지구상의 무엇입니까?

업데이트 : 이것을 확인하십시오. 이 soooooooooooooooooooooooooooooooooooo 이상해 :

@foreach(var item in menuItems) { 
    <p>@item.GetPropertyValue("umbracoNaviHide") - @item.Name</p> 
} 

이 다음 날 제공 : 비행 도대체 얼마나

Ticked - Our offers 
Not ticked - Technology 
Ticked - Projects 
Not ticked - About us 
Not ticked - Gallery 
Ticked - Contact 

:

FALSE - Our offers 
FALSE - Technology 
TRUE - Projects 
FALSE - About us 
FALSE - Gallery 
TRUE - Contact 

그러나, 이것은 umbracoNaviHide는 백 오피스의 설정은 어떻게 이게 가능해?

+0

그렇다면 전혀없는 아동을 나열하고 싶습니까? :) Children.Any (x => x.IsVisible()) 또는 이와 유사한 것을 항상 확인할 수 있습니다. 그래서 해결 되었습니까? –

+0

@MarcinZajkowski 어, 아니요. umbracoNaviHide를 사용하여 해당 속성 값에 따라 표시/숨기기를해야하는 요소 메뉴를 만들고 싶습니다. – MortenMoulder

+0

.Children (x => x.IsVisible())을 사용하여 어린이를 가져갈 수 있습니까? –

답변

1

좋아, 모든 게 분명 지금 :)

당신은 동적 객체를 사용하고 IPublishedContent로 처리하려는. 그것들이 올바르게 매핑되지 않으면 이상하고 예측할 수없는 행동을합니다.

으로 동적 객체는 다음과 같은 Umbraco 버전에서 제거 될 예정입니다, 난 강력하게 IPublishedContent 객체를 입력하거나 ModelsBuilder을 활용하고 특정 유형의 생성 모델에서 작동 사용하는 것이 좋습니다.

내 테스트 코드는 다음과 같습니다. 두 버전 모두 내 테스트 7.6.9 솔루션에서 작동합니다.

// Dynamic object version - will be deprecated - don't use! 
//var visibleChildItems = CurrentPage.Site().Children.Where("Visible"); 

// Strongly Typed version - suggested 
var visibleChildItems = Model.Content.Site().Children(x => x.IsVisible()); 

<ul> 
    @foreach (var item in visibleChildItems) 
    { 
     <li> 
      <a href="@item.Url">@item.Name</a> 
     </li> 
    } 
</ul> 

희망 사항은 문제를 해결할 것입니다. 동적 객체를 통해 조작하고 속성을 얻는 방법에 관심이 있다면 조금 오래되었지만 여전히 유효한지 확인하십시오 Umbraco 용 면도기 : https://our.umbraco.org/projects/developer-tools/umbraco-v6-mvc-razor-cheatsheets.

+0

답변으로 쓰는 방법을 모르겠다. 내가 분명히 코멘트로 써서 나에게 도움이되지 않는다. 그것은 심지어 내가 시험해 보았던 많은 예들에 열거되어있다. 제 예제에서는 분명히 볼 수 있듯이, 동적 인 것과 IPublishedContent의 두 가지로 취급하려고합니다. 나는 둘 다 시도했다. 당신이 대답을해야한다면, 적어도 뭔가 새로운 것을 내놓으십시오 .. – MortenMoulder

+0

코드 샘플을 넣기위한 답으로 그것을 공유했습니다. 다른 곳에서 뭔가 잘못 했어야합니다. 나는 Children을 호출 할 수 없다. 동적 인 객체에서 (x => ...) 어디서 코드를 작성하는지 모르겠다. 귀하의 예제에서 동적 객체를 호출하는 IPublishedContent의 확장 메소드와 동일합니다. 아마도 캐시에 문제가있을 수 있습니까? 전체 웹 사이트를 다시 게시 했습니까? 그것은 평소와 같이 일합니다. 원한다면이 예제의 코드를 공유 할 수 있습니다. –

+0

전체 사이트를 다시 게시했습니다. 귀하의 문서 유형 및 내용 노드 구조를 보여 주시겠습니까? – MortenMoulder

1

의견을 남길 수 없어 답변으로 게시하겠습니다. 나는 같은 문제가 있었다. 필자의 경우 디폴트 값을 검사하도록 설정했다. 기본값을 선택하지 않았습니다. 나는 umbraco에 갔다 .Navi는 숨 겼고, 그 다음 박스를 점검했다. 그리고 그것은 나를 위해 완벽하게 움직이게되었다. 나는 올바른 방향으로 나를 가리켜 주셔서 감사합니다.