2016-09-19 1 views
0

enter image description here sitecore 8에서 VS 솔루션을 게시 한 후 몇 페이지를 볼 수 있습니다. 몇 페이지 "컨트롤에 코드 블록 (예 : < % ... %>)이 포함되어 있으므로 컨트롤 컬렉션을 수정할 수 없습니다"라는 오류가 나타납니다. 도와주세요.sitecore 8에서 컨트롤에 코드 블록 (예 : <%...%>)이 포함되어있어 컨트롤 컬렉션을 수정할 수 없습니다 "오류가 발생합니다.

+3

구글 (여기에 SO에 포함) 해당 오류에 대한 답변을 많이 가지고 있지만, 특정 도움이 필요하면 우리가 ... – Gatogordo

+0

@Gatogordo, 나는이 몇 가지 코드를 볼 수 오류의 스냅 샷을 추가했습니다.이 문제에 대한 제안을 얻을 수 있다면 좋을 것입니다. –

+0

대체로 어구 구문이 올바르지 않습니다. <% %> 태그를 한 번 더 확인하십시오. – Gabbar

답변

1

이것은 일반적으로 Sitecore 레이아웃에서 코드 블록을 사용하기 때문에 발생합니다. 이렇게하면 내용 편집기에서 제대로 작동하지만 페이지 편집기를 사용하거나 페이지를 미리 보면이 오류가 발생합니다. 이것은 Sitecore가 컨트롤 컬렉션을 수정하는 페이지에 리본 컨트롤을 동적으로 추가하기 때문에 발생합니다.

그러나 게시 된 페이지에서 언급했기 때문에 실제로 Sitecore와 관련이없고 리본 컨트롤이 전혀 없습니다 (이 문제는 vanilla Asp.net에서도 발생할 수 있습니다). 코드 블록을 사용하여 페이지 머리글에 값을 주입하고 참조하는 컨트롤이 아직 렌더링되지 않았기 때문에 상황이 발생할 수 있습니다. 포함 된 오류 메시지를 기반으로 사용자 (또는 적어도 Active Commerce 스킨)가이 방식으로 메타 태그를 작성하려고 시도하는 것처럼 보입니다.

몇 가지 옵션이 문제를 해결하기 위해 여기에 있습니다 :

  • 다음 (예를 들어, 필드의 클라이언트 ID) 자바 스크립트로 뭔가를 주입하려고하는 것은 너무 Page.ClientScript.RegisterClientScriptBlock를 사용하는 경우.
  • 자바 스크립트에 값을 삽입하려는 경우 JavaScript 블록을 페이지 끝 (태그 앞) 또는 참조하는 컨트롤 이후의 스크립트 블록으로 이동할 수도 있습니다. 이것으로 인해 종종이 오류가 발생합니다.
  • 대신 데이터 바인딩 블록을 사용하십시오 (< % # %>). 페이지 속성에 액세스하는 경우 Page_Load에 Page.DataBind()를 추가해야합니다.

사용자가 문제를 해결하지 못하면 관련 코드를 공유 할 수 있으므로 도움을받을 수 있습니다.

참고 :

http://www.tcsc.com/sitecore-layouts-and-code-blocks/https://weblogs.asp.net/abdullaabdelhaq/how-to-fix-this-the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-i-e-lt-gt

관련 문제