2016-06-01 4 views
2

변환 내부에 언어 선택기를 표시하려고합니다.Kentico 9 - 변환 언어 선택기 변환 내

웹 파트를 페이지에 추가했지만 변환 내에서 정의하는 것이 작동하지 않으면 작동합니다.

이것은 현재 변형 된 내용이지만 리피터는 "아무것도 표시하지 않습니다!"라고 말합니다.

<cms:LanguageDataSource ID="dsLanguages" ExcludeUntranslatedDocuments="false" ExcludeCurrentCulture="false" runat="server" /> 

<ul class="sub-menu"> 
    <cms:BasicRepeater ID="rptLanguages" DataSourceName="dsLanguages" ZeroRowsText="Nothing!" runat="server"> 
    <ItemTemplate> 
     <li class="menu-item"> 
     <a href="<%# Eval("URL") %>"><span class="flag-icon flag-icon-<%# Eval("CultureCode") %>"></span><%# Eval("CultureName") %></a> 
     </li> 
    </ItemTemplate> 
    </cms:BasicRepeater> 
</ul> 

답변

1

이 정말 좋은 질문이고 나는 변환 또는 ASPX 템플릿 내부 웹 파트를 사용하는 방법에 대한 많은 혼란이 일반적으로이 있음을 참조하십시오. 여기

주요 포인트는

웹 파트가없는 는 일반적으로 변환 또는 ASPX 템플릿에서 지원한다는 것입니다

이후 웹 파트는 변환에이를 등록 할 수 있습니다 일반적으로 사용자 컨트롤,하지만 그들의 특정한 생활주기 때문에 그들이 실제로 일할 것이라는 아무 보증도 없다. 더 복잡한 웹 파트는 확실히 작동하지 않을 것이며 이것은 언어 선택기에서도 마찬가지입니다.

공식 documentation 상태 : 변환

의 컨트롤을 사용하여 (UPDATE 참조)

당신은 등록 및 변환 내부 사용자 컨트롤과 서버 컨트롤을 사용할 수 있습니다. 자세한 내용은 변환 예제를 참조하십시오. 그러나 변환시 웹 파트를 사용하면 성능상의 이유로 권장되지 않습니다. 그들은 모두에서 지원 아니기 때문에

그러나이 완전히 정확하지 않습니다. 저는 이미이를 해결하기 위해 Kentico의 기술 관련 글에 대한 요청서를 제출했습니다.

사용자 컨트롤을 언어 선택기에서 선택하여 등록 할 수는 있지만 실제로 도움이 될지 확실하지는 않습니다. 일부 Kentico 기본 변환은 실제로 사용자 컨트롤을 등록하므로 일부 경우에 도움이 될 수 있습니다.

일반적으로 가능한 경우 변환에서 사용자 정의 컨트롤을 사용하지 마십시오. 언어 선택기 웹 파트를 변형 외부에 배치하는 것이 좋습니다. 다른 조정없이 제대로 작동하도록하는 가장 쉬운 방법입니다.

UPDATE

: 우리는 변환의 코드 내에서 웹 파트를 사용하지 않는 것이 좋습니다

:

Kentico 팀에 이야기 한 후 메모 here가 현재 상태를 반영하도록 변경되었다.이로 인해 성능이 저하 될 수 있으며 특정 웹 부품이주기 내에서 주기로 인해 변형 내에서 올바르게 작동하지 않을 수 있습니다.

+0

명확하고 자세한 답변을 보내 주셔서 감사합니다. 나는 지금 사용자 제어 경로를 시도 할 것이라고 생각한다. 만약 실패하면 메뉴 전체를 사용자 정의 웹 파트로 다시 작성해야 할 수도 있습니다. –

+0

당신을 진심으로 환영합니다! 필자는 기술 작가와 접촉했으며 이미 문서를 업데이트하여 현재 상태를 반영합니다. 나는 또한 나의 대답을 업데이트했다. 질문에 감사 드리며 제대로 작동하도록 할 수 있기를 바랍니다. – Enn

-1

나는 Enn에 동의하며, 리피터 제어주기가 페이지에 동적으로 추가되어 있기 때문에 문제가있을 수 있습니다. 는 사실로 설정 DelayedLoading 속성을 대신 BasicRepaterCMSRepeater 컨트롤을 사용하려고 있나요?

2

문제는 데이터 소스가 데이터를 반환하지 않는다는 것입니다.

변형에서 동적으로 데이터 소스의 속성을 생성 할 필요가없는 경우 언어 데이터 원본 웹 파트를 페이지에서 잘 작동하는 것으로 만들고 해당 변환에서 Web part control ID을 참조하십시오.

언어 데이터 원본 웹 파트에 문맥에서 뭔가가 누락되었을 수 있습니다. 내부적으로 DS의 Node 속성은 변환시 사용할 수없는 DocumentContext.CurrentDocument을 사용합니다. 이것은 Enn이 다른 사이클을 가진 컨트롤에 대해 말하는 것과 같습니다.

다른 옵션은 사용자 정의 C# 코드를 대괄호 안에 넣고 프로그래밍 방식으로 필요한 데이터를 검색하는 것입니다.

+0

답변 해 주셔서 감사합니다! 이제 몇 가지 옵션이있어서 어떻게되는지 보겠습니다. –