2012-01-30 2 views
1

masterpage 및 많은 콘텐츠 페이지가있는 ASP.net 사이트를 구축했습니다. 나는 최근에 메뉴 페이지에 새로운 메뉴 컨트롤을 추가하여 사용자가 액세스 레벨에 따라 메뉴를 동적으로 빌드 할 수 있도록했다. 포스트 백을 할 때까지 코드가 숨어서 모든 작업이 끝나기 전까지는 메뉴가 완전히 사라진다.포스트 백 후에 MasterPage에서 동적으로 생성 된 컨트롤을 유지하는 방법

포스트 백이 발생할 때 다음 오류가 발생하므로 현재 (! Page.IsPostback) 안에 메뉴 빌드 기능이 있습니다.

"이름은 16 진수 값 0x32 인 '2'문자로 시작할 수 없습니다. 행 1, 위치 1538."

내가 찾고있는 것은 포스트 백이 발생한 후 동적으로 새로운 동적 컨트롤을 유지하는 방법을 찾는 것입니다 (또는 오류를 해결하면 어느 것이 든 행복해집니다).

도움을 주시면 감사하겠습니다.

답변

1

컨트롤을 초기화하고 컨트롤 트리에 추가하는 컨트롤은 포스트 백 상태를 기반으로 선택적으로 제공되는 것이 아니라 항상 사용해야합니다. 그래서 dyn-init 코드를 page-init (OnInit)에 놓아서 항상 실행하면 작동 할 것입니다.

이러한 접근 방식은 aspx/ascx 파일 내에서 asp.net 컨트롤을 정의하는 것과 같습니다. 페이지의 OnInit (페이지의 컨트롤 트리에 해당 컨트롤이 추가 될 때)에서 모든 태그가 해석됩니다.

+0

"name can not begin ..."오류는 관련이 없습니다 - 뭔가 (일부 요소 또는 asp.net 컨트롤)의 이름 [char]이 char "2"(또는 아마 숫자)로 시작해서는 안됨을 나타냅니다. 당신은 귀하의 컨트롤 내에서 그것을 찾거나 어쩌면 'name = "2"를 검색해야합니다. –

0

나는 공개 문제를 마감하고 싶습니다.

메뉴 컨트롤 공급 업체와의 긴밀한 조사와 대화를 통해 원래 컨트롤 내에서 버그를 발견하고 증명할 수있었습니다. 외관상으로는 메뉴를 만들기 위해 제공 한 일부 데이터의 앞 숫자 (이 경우 2)는 컨트롤이 재생되도록합니다. 나는 그 원인이 무엇인지, 왜 실패했는지 모르지만, 공급자는 코드의 새로운 버전을 통제하고 전달했으며 모든 것이 잘 작동한다.

이 문제에 대해 아는 사람들에게 감사드립니다.

관련 문제