2008-09-16 5 views
50

차이점은 무엇입니까? 공식적인 용어는 무엇입니까? ASP.NET 3.5에서 사용되지 않는 용어가 있습니까?UserControl, WebControl, RenderedControl 및 CompositeControl의 차이점은 무엇입니까?

+0

가능한 복제 [\ [ASP.NET \] 사용자 컨트롤, 서버 컨트롤 및 사용자 지정 컨트롤 간의 차이점은 무엇입니까?] (http://stackoverflow.com/questions/994009/asp-net-what-are- 차이점 - 사용자 - 컨트롤 - 서버 - 컨트롤 - 사용자) – Earlz

+0

@Earlz : 질문하는 3 가지 구성 요소 중 2 가지가 여기에서 묻는 구성 요소와 다릅니다. 또한이 질문은 훨씬 오래되었습니다. –

+0

@Bill ah 그들은 나에게 정확한 우두머리처럼 보였다. 어쩌면 합병이 가능할까요? 또한 실제로 나에게 깃발에 대한 응답을 주었던 첫 번째 중재자가되었습니다. – Earlz

답변

47

UserControl : 다른 웹 컨트롤로 구성된 사용자 지정 컨트롤 .ascx로 끝나야합니다. 거의 aspx 웹 페이지의 작은 버전처럼. UI (ascx)와 코드 숨김으로 구성됩니다. DLL을 참조하여 다른 프로젝트에서 재사용 할 수 없습니다.

웹 컨트롤 : 웹 페이지 또는 UserControl에서 호스팅되는 컨트롤입니다. 이 클래스는 하나 이상의 클래스로 구성되며 세로로 작동하며 aspx 페이지 또는 UserControl에서 호스팅됩니다. WebControls에는 UI "페이지"가 ​​없으며 해당 내용을 직접 렌더링해야합니다. DLL을 참조하여 다른 응용 프로그램에서 다시 사용할 수 있습니다.

RenderedControl : 존재하지 않습니다. WebControl과 동의어 일 수 있습니다. 컨트롤이 aspx 페이지에 렌더링되기보다는 HttpResponse에 직접 작성되었음을 나타낼 수 있습니다.

CompositeControl : Inbetween UserControls와 WebControls. 다른 컨트롤로 구성되어 있으므로 UserControls와 같은 코드입니다. 컨트롤 합성을위한 그래픽 UI가없고, CompositeControls의 UI 편집 지원은 컨트롤 디자이너가 코딩해야합니다. 합성은 코드 숨김에서 수행됩니다. CompositeControls는 WebControls와 같은 다른 프로젝트에서 재사용 할 수 있습니다.

+0

사실 복합 컨트롤에는 UI가 없으므로 Controls 컬렉션에 다른 컨트롤을 채우는 데 전적으로 의존합니다. 렌더링 된 컨트롤은 다른 컨트롤을 다시 사용하지 않지만 merher는 순수 텍스트 (html)를 출력하기 위해 Render 메서드를 재정의합니다. –

+0

내 참조를 다시 확인하고 내 CompositeControl 정의를 명확히했습니다. 하지만 MSDN 설명서에서 RenderedControl에 대한 공식적인 언급을 찾을 수 없습니다. 그것에 대한 링크가 있습니까? 나는 그것이 무엇을 의미하는지에 대한 귀하의 평가에 동의합니다 ... – Will

+0

@Will, UserControl에 관해서는, DLL을 참조하여 재사용 할 수 있습니다 (컨트롤이 DLL에 Emdedded되어야 함). 답을 확인하십시오. – ajukraine

8

ServerControl을 잊어 버렸습니다. 나의 이해에서

은 그런 것입니다 :

  • 컨트롤의 두 가지 종류가 있습니다 : UserControl을하고 ServerControl
  • CompositeControls는 "고급"된 UserControls의 친절이. Scott Guthries Blog에 대한 자세한 정보를 찾아보십시오.
  • 모두 WebControls입니다 (모두 System.Web.UI.Control에서 파생 되었기 때문에)
  • 모두 렌더링 된 컨트롤로 표시되기 때문에 모두 렌더링됩니다. MSDN에서

:

사용자 컨트롤 ASP.NET에서

:하는 ASP.NET 페이지와 같은 구문을 사용하여 선언적으로 를 작성하고 있습니다 서버 제어 .ascx 확장자 인 의 텍스트 파일로 저장되었습니다. 사용자 컨트롤 페이지 기능을 분할하고 다시 사용하도록 수 있습니다. 제 요청되면, 페이지 프레임 워크에서 System.Web.UI.UserControl 을 도출하고, 그것을 후속 요청을 재사용 어셈블리, 에 그 클래스를 컴파일하는 클래스로 사용자 제어를 파싱한다. 사용자 컨트롤은컴파일 및 배포없이 해당 페이지 스타일 작성 및 배포로 인해 으로 쉽게 생성됩니다.

서버 컨트롤

사용자 인터페이스 및 관련 기능을 캡슐화하는 서버 측 컴포넌트 . ASP.NET 서버 컨트롤은 System.Web.UI.Control 클래스에서 직접 또는 을 간접적으로 파생시킵니다. ASP.NET 서버 컨트롤 인 은 웹 서버 컨트롤, 서버 컨트롤 및 ASP.NET 모바일 컨트롤을 포함합니다. ASP.NET 서버 컨트롤의 페이지 구문에는 컨트롤의 태그에 runat = "server"특성이 포함되어 있습니다. 참고 항목 : HTML 서버 컨트롤, 유효성 검사 서버 컨트롤, 웹 서버 컨트롤.

+0

UserControl! = CompositeControl. http://weblogs.asp.net/scottgu/archive/2006/01/29/436854.aspx – Will

+0

네가 옳다. 나는 오늘 무언가를 배웠다. 나는 대답에서 그것을 바꿨다. – JRoppert

+0

나는 이것이 옳다고 생각하지 않는다. UserControl과 WebControl은 두 가지 유형의 서버 컨트롤입니다. (당신이 인용 한 텍스트에서 실제로 UserControl은 Server Control이라고 말합니다.) 아마도 "서버 컨트롤"은 runat = server를 사용하는 모든 컨트롤을 의미한다고 생각합니다. 또한 UserControl은 WebControl이 아닙니다. UserControl은 Control에서 상속받은 TemplateControl을 상속 받지만 WebControl은 Control에서 상속받은 다른 클래스입니다. CompositeControl은 WebControl을 상속하지만 INamingContainer 및 ICompositeControlDesignerAccessor를 구현하므로 UserControl과 유사합니다. –

0

아직 평판이 부족하기 때문에 답변으로 추가하겠습니다. 위의 답변은 위의 답변과 같습니다. link에서

당신은 포함 :

복합 컨트롤은 여러 자식 컨트롤이 집계하고 그들 자신의 사이와 외부 세계와 상호 작용하는 건축가 복잡한 구성 요소에 대한 권리 도구입니다. 렌더링 된 컨트롤은 출력에 드롭 다운 또는 텍스트 상자와 같은 대화 형 요소가 포함되지 않은 컨트롤의 읽기 전용 집계에 적합합니다.

저는 문서가 렌더링 메서드를 렌더링 된 컨트롤로 재정 의하여 만들어지는 UserControls를 참조한다고 생각합니다. 따라서 질문과는 별도의 유형이 아니라 UserControl을 구현하는 방법입니다. 패턴.

3

Web Forms과 마찬가지로 사용자 컨트롤을 비주얼 디자이너에서 만들거나 HTML과 별도의 코드로 작성할 수 있습니다. 실행 이벤트도 지원할 수 있습니다. 그러나 웹 사용자 정의 컨트롤은 런타임에 동적으로 컴파일되므로 도구 상자에 추가 할 수 없으며 페이지에 추가 할 때 간단한 자리 표시 자로 나타납니다.

이렇게하면 속성 창 및 디자인보기 미리보기를 포함하여 전체 Visual Studio .NET 디자인 타임 지원에 익숙한 경우 웹 사용자 컨트롤을 사용하기가 어려워집니다. 또한 응용 프로그램간에 사용자 정의 컨트롤을 공유하는 유일한 방법은 각 응용 프로그램에 별도의 복사본을 두는 것입니다. 컨트롤을 변경하면 더 많은 유지 관리가 필요합니다.

웹 사용자 지정 컨트롤은 쉽게 사용할 수 있지만 작성하기가 더 어렵게 컴파일 된 코드입니다. 웹 사용자 지정 컨트롤은 코드에서 작성되어야합니다. 컨트롤을 만든 후에는 도구 상자에 추가하고 전체 속성 창 지원 및 ASP.NET 서버 컨트롤의 다른 모든 디자인 타임 기능을 사용하여 비주얼 디자이너에 표시 할 수 있습니다. 또한 웹 사용자 지정 컨트롤의 단일 복사본을 전역 어셈블리 캐시에 설치하고 응용 프로그램간에 공유 할 수 있으므로 유지 관리가 더 쉬워집니다.

2

Will의 응답과 달리 referencing a web deployment project으로 다른 프로젝트의 UserControls를 재사용 할 수 있습니다.

+0

http://www.cmswire.com/cms/tips-tricks/aspnet-reusing -web-user-controls-and-forms-000915.php – banging

관련 문제