2016-11-14 11 views
0

렌더링이 있지만 페이지의 다른 자리 표시 자에 배치하고 싶습니다. 처리중인 현재 렌더링의 자리 표시 자에 따라 HTML을 수정하고 싶습니다. 누구든지이 시나리오를 발견하고 해결 했습니까? 공유하십시오.Sitecore 6.5 : webforms (non-mvc)에서 현재 렌더링을 얻는 방법

예 : 이미지 캐 러셀 렌더링 항목이 있습니다. 그것은 HTML이 생성 된 자신의 .cs 클래스입니다. 이제 Sitecore 컨텐트 아이템의 프리젠 테이션 세부 사항에서 "zone1"이라는 플레이스 홀더와 "zone2"플레이스 홀더의 다른 이미지 회전식 컨베이어 렌더링을 추가합니다. zone1과 zone2에 따라 HTML이 다릅니다. HTML을 재정의하기 위해 RenderModel (HtmlTextWriter 작성자)을 재정의했습니다.

+0

이 현재 자리를 얻기 질문 :

 Sublayout currentSublayout = this.Parent as Sublayout; Placeholder currentPlaceholder = currentSublayout.Parent as Placeholder; 

이 자리 표시 자 사용의 이름을 얻을? 사용자 정의 컨트롤에서? 그것은 다음과 같아야합니다 : (Placeholder) this.Parent.Parent; –

답변

0

자리 표시 자에 기반하여 하드 코딩하는 대신 렌더링 매개 변수를 사용하여 동일하게 만들 수 있습니다. 가장 좋은 방법은 사용자가 선택할 수있는 값 목록을 만들어 렌더링 템플릿에 배치하는 것입니다. 이것을 렌더링 정의에 추가하면 사용자가 컨트롤의 '변형'으로 볼 수있는 값 중 하나를 선택할 수 있습니다. 코드에서이 값을 쉽게 얻고 원하는대로 조정할 수 있습니다.

이 방법은 편집자가 값을 설정해야하므로 (표준 값을 사용하여 도움을 줄 수 있음) 필요하지만 유연성을 제공합니다. 새로운 자리 표시 자에 구성 요소가 필요하거나 다른 변경이 필요한 경우이 유연성은 많은 시간을 확보하고 하드 코딩 된 스파게티를 방지합니다.

+0

신속하게 응답 해 주셔서 감사합니다. 예를 들어 질문을 업데이트했습니다. 렌더링 매개 변수를 추가하면 RenderModel (HtmlTextWriter writer) 메서드에서 html을 업데이트 할 수 있도록 현재 렌더링 컨텍스트를 렌더링하는 방법이 어떻게됩니까? – Kdev

+0

Sitecore Webcontrol에서 상속받은 경우'Parameters' 속성을 통해 액세스 할 수 있습니다. – Gatogordo

0

다음과 같은 코드를 사용하여 sublayout에서 자리를 얻을 수 있습니다 :

currentPlaceholder.Key