2011-10-17 6 views

답변

0

일반적으로 사용자 정의 컨트롤은 단일 프로젝트 내에서 사용하도록 설계되었습니다. 이는 사용자 정의 컨트롤이 마크 업 (ascx) 파일과 코드 숨김의 두 부분으로 이루어지기 때문입니다. 프로젝트를 라이브러리로 컴파일하면 코드 숨김 클래스는 dll에는 패키지되지만 ascx에는 패키지되지 않습니다. 마크 업 (ascx)에는 실제 컨트롤 트리가 포함되어 있으므로 사용자 정의 컨트롤을 사용할 수 없으면 허용되지 않습니다. 따라서 사용자 컨트롤을 공유하는 솔루션 중 하나는 사용자 정의 컨트롤의 코드를 라이브러리로 컴파일하고 ascx 파일을 대상 프로젝트에 복사하는 것입니다.

더 나은 해결책은 사용자 정의 컨트롤의 마크 업 (ascx)을 라이브러리 프로젝트의 임베디드 리소스로 패키지화 한 다음 사용자 지정 가상 경로 공급자를 사용하여 리소스에서로드하는 것입니다. 이 기술을 설명하는 this code-project article을 참조하십시오.

+0

더 쉬운 해결책이 있습니까? : – user603007

+0

@ user603007 가장 쉬운 해결책은 사용자 제어 파일 (코드 및 마크 업)을 유지 보수 할 수없는 새 프로젝트에 복사하는 것입니다. 코드를 패키지화 한 다음 직접 복사 또는 공유 폴더 (또는 공유 폴더 VSS와 같은 소스 제어 시스템에서). 그러나 최선의 방법은 코드와 마크 업을 함께 패키지화하는 것입니다! – VinayC

0

한 가지 방법은 내가 할이 공유 된 UserControls와 1. 웹 응용 프로그램 프로젝트를하는 것입니다 다음 컨트롤을 사용하는 각 응용 프로그램/웹 사이트에 대한 3.를 사용할 필요가 다른 웹 응용 프로그램 프로젝트에 의해 참조 (2) 컨트롤은 사용자의 페이지에 포함될 수 있도록 ascx 위치를 가리키는 virt 디렉토리를 만듭니다.

배포 환경 설정에 따라 프로덕션 환경에 배포 할 때이 차이가 있습니다. 예, 일반적으로 재사용하고 싶다면 서버 컨트롤/클래스 lib를 사용해야하지만 위와 같이 usercontrols 및 공유에 복잡한 UI를 구현하는 것이 더 쉽고 빠르다는 것에 동의합니다. 다른 기존 웹 응용 프로그램에서 usercontrols를 다시 사용할 때도 작동합니다. 단지 ascx 위치를 가리키고 app dll을 참조하는 virt 디렉토리를 만듭니다 (또는 방금 빈을 드롭하십시오).

+0

아 .. 괜찮습니다. VinayC는 거의 동일하지만 13 분 먼저 설명했습니다)) – Jack0fshad0ws

관련 문제