2012-11-30 7 views
0

우리 디자이너가 고객을 위해 사용자 지정 asp.net 웹 폼을 만드는 방법을 시도하고 있습니다. 기본적인 아이디어는 우리가 저장할 수있는 일반적인 필드 집합을 가지고 있으며, 각 고객은 그 필드의 하위 집합을 사용하며, 각 고객은 유사한 개념에 대해 자체 이름을 가질 수 있습니다 (즉 한 고객은 '환자'와 다른 고객 '을 사용할 수 있습니다. '). 고객 컨텍스트에 머물러 있으면 디자이너가 고객 요구를 충족시키는 올바른 양식을 작성하는 데 도움이됩니다.Asp.net은 디자인 타임에 부모 폼의 사용자 지정 UITypeEditor 컨텍스트를 설정합니다.

이제이 작업을 최대한 수행하려면 디자인 경험을 최대한 활용해야합니다. asp : TextBox와 같은 기본 컨트롤에서 파생 된 사용자 지정 컨트롤 집합이 있고 컨트롤을 반복하고 데이터 저장소에서 값을 삽입하거나 값을 가져 와서 유지 (완료) 할 수있는 인터페이스를 구현합니다. 이러한 모든 컨트롤은 내 레코드 개체의 데이터 요소에 바인딩되어야합니다. 바인딩을 허용하도록 메타 데이터 시스템을 설정했지만 문제가있는 곳에서는 UITypeEditor에 사용 가능한 필드 목록을 가져 오는 중입니다. 즉, (디자인 타임에) 양식에서 고객 컨텍스트를 설정 한 다음 각 컨트롤의 사용자 지정 속성 편집기에서 해당 값에 액세스하여이를 (디자인 타임에) 사용하는 방법을 파악하지 못했습니다. 이것이 가능한가? 나는이 문제를 잘못된 방향으로보고 있는가? 양식에는 항상 1 개의 고객 컨텍스트 만 있습니다. 그래서 내 양식 프로젝트에서는 각 양식마다 다른 고객 ID가 설정됩니다.

두 번째 질문으로 어떻게 이러한 편집기를 디버깅 할 수 있습니까? 편집자에게는 웹 컨텍스트에 대한 기대가 있지만 asp.net 속성 표는 없습니다. 그리고 있었더라도 편집자는 브라우저에서 실행되지 않는 winforms 구성 요소입니다.

문제를 단순화하면 현재 가지고있는 코드를 포함 할 수 있지만 단순화 된 예제도 6 개 클래스입니다.

답변

0

일반적인 해결책이 향후 누구에게나 유용 할 수 있기 때문에이 글을 게시했습니다.

다른 방법으로이 문제를 해결할 수있었습니다. 부모 페이지는 컨트롤을 반복하고 특정 인터페이스를 구현하는 모든 컨트롤에 CustomerId를 설정합니다.

디버깅 용. 일부 리팩토링은 테스트를 위해 웹 구현의 특정 부분을 쉽게 교체 할 수있는 곳으로 나를 데려갔습니다.