컨트롤은 텍스트 상자, 버튼, 확인란, 목록 상자, 레이블 및 기타 여러 도구를 포함하는 그래픽 사용자 인터페이스의 작은 기능 블록입니다. 이러한 도구를 사용하여 사용자는 데이터를 입력하고 선택하고 선호 사항을 표시할 수 있습니다.
컨트롤은 유효성 검사, 데이터 액세스, 보안, 마스터 페이지 생성 및 데이터 조작과 같은 구조적 작업에도 사용됩니다.
ASP.NET은 다음과 같은 다섯 가지 유형의 웹 컨트롤을 사용합니다.
HTML 컨트롤
HTML 서버 제어
ASP.NET 서버 컨트롤
ASP.NET Ajax 서버 제어
사용자 컨트롤 및 사용자 정의 컨트롤
ASP.NET 서버 컨트롤은 ASP.NET에서 사용되는 기본 컨트롤입니다. 이러한 컨트롤은 다음 범주로 나눌 수 있습니다.
유효성 검사 제어 - 클라이언트 측 스크립트를 실행하여 사용자 입력 및 작업을 유효성 검사하는 데 사용됩니다.
데이터 소스 제어 - 다양한 데이터 소스에 대한 데이터 바인딩 기능을 제공합니다.
데이터 보기 컨트롤 - 이 컨트롤은 데이터 원본에서 바인딩된 데이터를 표시할 수 있는 다양한 목록과 테이블입니다.
개인화 제어 - 사용자 기본 설정에 따른 사용자 정보를 기반으로 페이지를 개인화합니다.
로그인 및 보안 제어 - 사용자 인증을 제공합니다.
마스터 페이지 - 전체 애플리케이션에 걸쳐 일관된 레이아웃과 인터페이스를 제공합니다.
탐색 컨트롤 - 사용자가 탐색하는 데 도움이 됩니다. 예를 들어 메뉴, 트리 보기 등이 있습니다.
풍부한 기능 제어 - 특수 기능을 구현합니다. 예: AdRotator, FileUpload 및 Calendar 컨트롤.
서버 컨트롤을 사용하기 위한 기본 구문은 다음과 같습니다.
<asp:controlType ID ="ControlID" runat="server" Property1=value1 [Property2=value2] />
또한 Visual Studio에는 오류 없는 코드를 생성하는 데 도움이 되는 다음과 같은 기능이 있습니다.
디자인 보기에서 컨트롤을 끌어서 놓습니다.
표시 및 자동 완성 기능을 위한 IntelliSense 기능.
속성 값을 직접 설정할 수 있는 속성 창입니다.
시각적 기능이 있는 ASP.NET 서버 컨트롤은 WebControl 클래스에서 파생되며 이 클래스의 모든 속성, 이벤트 및 메서드를 상속합니다.
WebControl 클래스 자체와 시각적 기능이 없는 기타 서버 컨트롤은 System.Web.UI.Control 클래스에서 파생됩니다. 예를 들어 PlaceHolder 컨트롤 또는 XML 컨트롤이 있습니다.
ASP.Net 서버 컨트롤은 WebControl 및 System.Web.UI.Control 클래스의 모든 속성, 이벤트 및 메서드를 상속합니다.
다음 표에는 모든 서버 컨트롤에 공통적인 속성이 나와 있습니다.
재산 | 설명하다 |
---|---|
액세스 키 | 이 키와 Alt 키를 동시에 누르면 포커스가 컨트롤로 이동됩니다. |
속성 | 컨트롤 속성에 해당하지 않는 임의의 속성 모음입니다(뷰 렌더링에만 사용됨). |
뒤로색상 | 배경색. |
바인딩컨테이너 | 데이터 바인딩된 컨트롤을 포함합니다. |
테두리색상 | 테두리 색상. |
테두리 스타일 | 테두리 스타일. |
테두리 너비 | 테두리 너비. |
원인검증 | 검증이 발생한 경우 표시됩니다. |
ChildControl이 생성되었습니다. | 서버 컨트롤의 자식 컨트롤이 설정되었는지 여부를 나타냅니다. |
클라이언트 ID | HTML 태그의 컨트롤 ID입니다. |
문맥 | 서버 컨트롤과 연결된 HttpContext 개체입니다. |
통제 수단 | 컨트롤 내의 모든 컨트롤 컬렉션입니다. |
컨트롤 스타일 | 웹 서버 컨트롤의 스타일입니다. |
Css클래스 | CSS 클래스. |
DataItemContainer | IDataItemContainer를 구현하는 경우 이름 지정자에 대한 참조를 제공합니다. |
데이터키컨테이너 | IDataKeysControl을 구현하는 경우 이름 지정자에 대한 참조를 제공합니다. |
디자인 모드 | 디자인 인터페이스에서 컨트롤이 사용되는지 여부를 나타냅니다. |
비활성화된CssClass | 컨트롤이 비활성화되었을 때 렌더링된 HTML 요소에 적용할 CSS 클래스를 가져오거나 설정합니다. |
활성화됨 | 컨트롤이 비활성화되었는지 여부를 나타냅니다. |
테마 설정 활성화 | 테마가 컨트롤에 적용되는지 여부를 나타냅니다. |
EnableViewState | 컨트롤의 뷰 상태를 유지할지 여부를 나타냅니다. |
이벤트 | 컨트롤을 나타내는 이벤트 핸들러 목록을 가져옵니다. |
세례반 | 글꼴 설정. |
전경색 | 전경색. |
HasAttributes | 컨트롤에 속성 그룹이 있는지 여부를 나타냅니다. |
HasChildViewState | 현재 서버 컨트롤의 자식 컨트롤에 저장된 뷰 상태 설정이 있는지 여부를 나타냅니다. |
키 | 높이(픽셀 또는 백분율)입니다. |
ID | 컨트롤의 식별자입니다. |
IsChildControlState가 지워짐 | 이 컨트롤에 포함된 컨트롤에 컨트롤 상태가 있는지 여부를 나타냅니다. |
활성화됨 | 컨트롤이 활성화되었는지 여부를 나타내는 값을 가져옵니다. |
IsTrackingViewState | 서버 컨트롤이 뷰 상태에 대한 변경 사항을 저장할지 여부를 나타냅니다. |
IsViewStateEnabled | 이 컨트롤에 대해 보기 상태가 활성화되어 있는지 여부를 나타냅니다. |
LoadViewStateById | 컨트롤이 인덱스가 아닌 ID로 뷰 상태 로드에 참여하고 있는지 여부를 나타냅니다. |
페이지 | 컨트롤이 포함된 페이지입니다. |
조상 | 자녀 보호 기능. |
렌더링 호환성 | 렌더링된 HTML이 호환되는 ASP.NET 버전을 지정합니다. |
대지 | 디자인 인터페이스가 표시될 때 현재 컨트롤을 보유하는 홀더입니다. |
스킨아이디 | 컨트롤에 적용된 스킨을 가져오거나 설정합니다. |
스타일 | 웹 서버 컨트롤의 외부 레이블에 스타일 속성으로 표시될 텍스트 속성 컬렉션을 가져옵니다. |
탭인덱스 | 웹 서버 컨트롤의 인덱스 레이블을 가져오거나 설정합니다. |
태그키 | 이 웹 서버 컨트롤에 해당하는 HtmlTextWriterTag 값을 가져옵니다. |
태그 이름 | 컨트롤 레이블의 이름을 가져옵니다. |
템플릿컨트롤 | 이 컨트롤의 템플릿을 포함합니다. |
템플릿소스디렉토리 | 이 컨트롤 내에 포함된 페이지 또는 컨트롤의 가상 디렉터리를 가져옵니다. |
툴팁 | 마우스 포인터가 웹 서버 컨트롤 위에 있을 때 표시되는 텍스트를 가져오거나 설정합니다. |
고유ID | 고유 식별자. |
뷰상태 | 동일한 페이지에 대한 여러 요청에 걸쳐 서버 제어 보기 상태를 저장하고 복원할 수 있는 상태 정보 사전을 가져옵니다. |
보기상태무시케이스 | StateBag 개체가 대/소문자를 구분하는지 여부를 나타냅니다. |
뷰상태모드 | 이 컨트롤의 보기 상태를 가져오거나 설정합니다. |
보이는 | 서버 컨트롤이 표시되는지 여부를 나타냅니다. |
너비 | 웹 서버 컨트롤의 너비를 가져오거나 설정합니다. |
서버 컨트롤의 메서드는 다음 표에 나와 있습니다.
방법 | 설명하다 |
---|---|
AddAttributesToRender | 지정된 HtmlTextWriterTag를 렌더링하는 데 필요한 HTML 속성과 스타일을 추가합니다. |
AddedControl | 컨트롤 개체의 컨트롤 컬렉션에 자식 컨트롤이 추가된 후에 호출됩니다. |
AddParsedSubObject | XML 또는 HTML 요소가 구문 분석되었음을 서버 컨트롤에 알리고 해당 요소를 서버 컨트롤의 컨트롤 컬렉션에 추가합니다. |
ApplyStyleSheetSkin | 페이지 스타일 시트에 정의된 스타일 속성을 컨트롤에 적용합니다. |
ClearCachedClientID | 하부 구조. 캐시된 ClientID 값을 null로 설정합니다. |
ClearChildControlState | 서버 컨트롤의 자식 컨트롤에 대한 컨트롤 상태 정보를 제거합니다. |
ClearChildState | 모든 서버 컨트롤 자식 컨트롤에 대한 뷰 상태 및 컨트롤 상태 정보를 제거합니다. |
ClearChildViewState | 모든 서버 컨트롤의 자식 컨트롤에 대한 뷰 상태 정보를 제거합니다. |
CreateChildControls | 하위 컨트롤을 만드는 데 사용됩니다. |
CreateControlCollection | 자식 컨트롤을 보관할 새 컨트롤 컬렉션을 만듭니다. |
CreateControlStyle | 모든 스타일 관련 속성을 구현하는 스타일 개체를 만듭니다. |
데이터바인드 | 데이터 소스를 서버 컨트롤과 모든 하위 컨트롤에 바인딩합니다. |
데이터바인드(부울) | DataBinding 이벤트를 발생시키는 데이터 소스와 옵션을 서버 컨트롤과 해당 자식 컨트롤에 바인딩합니다. |
DataBindChildren | 데이터 소스를 서버 컨트롤의 하위 컨트롤에 바인딩합니다. |
폐기하다 | 서버 컨트롤이 메모리에서 해제되기 전에 최종 정리 작업을 수행할 수 있도록 합니다. |
EnacheChildControls | 서버 컨트롤에 자식 컨트롤이 포함되어 있는지 확인합니다. 그렇지 않은 경우 하위 컨트롤을 만듭니다. |
확인 ID | 식별자가 없는 컨트롤에 대한 식별자를 만듭니다. |
같음(객체) | 지정된 개체가 현재 개체와 같은지 여부를 확인합니다. |
마무리 | 휴지통에서 개체를 회수하기 전에 개체가 리소스를 해제하고 다른 정리 작업을 수행할 수 있도록 합니다. |
FindControl(문자열) | 지정된 id 매개변수를 사용하여 서버 컨트롤에 대해 현재 명명된 컨테이너를 검색합니다. |
FindControl(문자열, Int32) | 지정된 id 매개변수와 정수를 사용하여 서버 컨트롤에 대해 현재 명명된 컨테이너를 검색합니다. |
집중하다 | 컨트롤의 입력 포커스를 설정합니다. |
GetDesignMode상태 | 컨트롤의 디자인 타임 데이터를 가져옵니다. |
GetType | 현재 인스턴스의 유형을 가져옵니다. |
GetUniqueIDRelativeTo | 지정된 컨트롤의 고유 ID 속성 중 접두사가 붙은 부분을 반환합니다. |
HasControls | 서버 컨트롤에 자식 컨트롤이 포함되어 있는지 확인합니다. |
HasEvents | 이벤트가 컨트롤 또는 다른 자식 컨트롤에 의해 등록되었는지 여부를 나타냅니다. |
IsLiteralContent | 서버 컨트롤에 텍스트 콘텐츠만 포함되어 있는지 여부를 결정합니다. |
LoadControlState | 제어 상태 정보를 복원합니다. |
LoadViewState | 보기 상태 정보를 복원합니다. |
지도경로보안 | 절대 또는 상대 가상 경로가 매핑된 물리적 경로를 검색합니다. |
MemberwiseClone | 현재 개체의 단순 복사본을 만듭니다. |
병합 스타일 | 웹 컨트롤의 비어 있지 않은 요소를 지정된 스타일로 복사하지만 컨트롤의 기존 스타일 요소를 덮어쓰지는 않습니다. |
버블이벤트 | 서버 컨트롤의 이벤트가 페이지의 UI 서버 컨트롤 계층 구조를 통과하는지 여부를 결정합니다. |
OnDataBinding | 데이터 바인딩 이벤트를 발생시킵니다. |
OnInit | Init 이벤트를 발생시킵니다. |
로드 시 | 로딩 이벤트를 발생시킵니다. |
OnPreRender | PreRender 이벤트를 발생시킵니다. |
언로드 시 | 제거 이벤트를 발생시킵니다. |
오픈파일 | 파일을 읽는 데 사용되는 스트림을 가져옵니다. |
제거된컨트롤 | 컨트롤 개체의 컨트롤 컬렉션에서 자식 컨트롤이 제거된 후 호출됩니다. |
세우다 | 지정된 HTML 작성자에게 컨트롤을 표시합니다. |
RenderBegin태그 | 지정된 작성자에게 컨트롤의 HTML 여는 태그를 표시합니다. |
RenderChildren | 클라이언트에 렌더링되는 콘텐츠를 작성하기 위해 서버 컨트롤의 자식 콘텐츠를 제공된 HtmlTextWriter 개체로 출력합니다. |
렌더컨텐츠 | 지정된 작성자에게 컨트롤의 내용을 표시합니다. |
렌더컨트롤(HtmlTextWriter) | 제공된 HtmlTextWriter 개체에 서버 컨트롤 콘텐츠를 출력하고 추적이 활성화된 경우 컨트롤에 대한 추적 정보를 저장합니다. |
RenderEndTag | 지정된 작성자에게 컨트롤의 HTML 닫는 태그를 표시합니다. |
해결어댑터 | 지정된 컨트롤 렌더링을 담당하는 컨트롤 어댑터를 가져옵니다. |
SaveControlState | 페이지가 서버에 다시 게시된 이후 발생한 서버 컨트롤의 상태 변경 사항을 저장합니다. |
SaveViewState | TrackViewState 메서드를 호출한 후 수정된 모든 상태를 저장합니다. |
SetDesignMode상태 | 컨트롤의 디자인 타임 데이터를 설정합니다. |
ToString | 현재 객체를 나타내는 문자열을 반환합니다. |
트랙뷰상태 | 컨트롤이 뷰 상태에 대한 변경 사항을 추적하여 개체의 ViewState 속성에 저장할 수 있도록 합니다. |
특정 서버 컨트롤인 트리 보기 컨트롤을 살펴보겠습니다. 트리 보기 컨트롤은 탐색 컨트롤입니다. 다른 탐색 컨트롤은 메뉴 컨트롤과 SiteMapPath 컨트롤입니다.
페이지에 트리 보기 컨트롤을 추가합니다. 작업에서 노드 편집...을 선택하고 다음과 같이 트리 보기 노드 편집기를 사용하여 각 노드를 편집합니다.
노드가 성공적으로 생성되면 디자인 보기에 다음과 같은 화면이 나타납니다.
AutoFormat... 작업을 사용하면 다음과 같이 트리 보기의 형식을 지정할 수 있습니다.
페이지에 레이블 컨트롤과 텍스트 상자 컨트롤을 추가하고 각각 lblmessage 및 txtmessage로 이름을 지정합니다.
특정 노드가 선택되면 레이블 컨트롤에 노드 텍스트가 표시되고 텍스트 상자에는 그 아래의 모든 하위 노드(있는 경우)가 표시되도록 코드 몇 줄을 작성합니다. 배경 파일의 코드는 다음과 같아야 합니다.
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;namespace eventdemo { public partial class treeviewdemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { txtmessage.Text = " "; } protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) { txtmessage.Text = " "; lblmessage.Text = "Selected node changed to: " + TreeView1.SelectedNode.Text; TreeNodeCollection childnodes = TreeView1.SelectedNode.ChildNodes; if(childnodes != null) { txtmessage.Text = " "; foreach (TreeNode t in childnodes) { txtmessage.Text += t.Value; } } } }}
페이지를 실행하여 효과를 확인하면 노드를 확장하거나 축소할 수 있습니다.