ASP.NET User Control
사용자 정의 컨트롤은 반복해서 사용하는 UI를 별도의 컨트롤 파일로 분리하기 위해 사용 하며 동작하는 방식은 ASP.NET 페이지와 동일 하지만 페이지의 일부로서 구성되는 컨트롤 이다. 결국 ASP.NET 사용자 정의 컨트롤은 ASP.NET 페이지의 일부를 컨트롤화 한 것 이라고 보면 된다.
사용자 정의 컨트롤은 유저 컨트롤(Web User Control) 이라고 하며 웹 페이지의 일부로 <HTML> 태그 블록을 포함 하지는 않지만 스크립트와 HTML 요소를 포함 할 수 있는 것이다. 그러나 웹 페이지의 일부 이므로 독립적인 실행은 불 가능 하다. 한번 작성된 컨트롤은 여러 페이지나 여러 곳에 사용 될 수 있다.
이 컨트롤을 사용하는 대표적인 이유는 각각의 페이지에서 반복적으로 사용되는 고정적인 어떤 독립 모듈을 위해서 이다. 예를 들어 사이트 하단에 위치하는 CopyRight 문구, 사이트 상단의 고정적인 메뉴 등을 위해서 쓰일 수 있는 것이다. 대부분의 사이트에서 메뉴를 쉽게 관리 하기 위해 메뉴 페이지를 모든 웹페이지에 반복적으로 하드 코딩 하기 보다는 분리된 프레임 구조로 나누어서 처리 하곤 한다.
일관성을 위해 프레임을 이용하는 것은 나쁜 구조는 아니지만 프레임에 의존 하는 사이트는 Contents의 양이 늘어나는 경우 확장 하거나 관리가 어렵다는 단점이 있다. 특히 하나의 페이지 내에서 데이터 교환을 할 경우 발생 하지 않는 문제가 프레임으로 나눌 경우 생기게 되어 불편 함을 야기 한다. 이럴 경우 사용자 컨트롤을 이용하게 되면 유용하게 해결 할 수 있다.
ASP.NET에서 사용자 컨트롤은 자그마한 ASP.NET 페이지 이다. 작은 페이지와 같은 개념이므로 사용자 정의 컨트롤의 작성은 ASP.NET 페이지를 만드는 것과 동일 하며 차이점이 있다면 실행 될 수 없다는 것이다. 이 또한 어쨌든 컨트롤 이므로 이를 호스트 하는 웹 페이지가 반드시 존재해야 한다는 것이다.
ASP.NET은 사용자 정의 컨트롤을 위해 ‘ascx’ 라는 특별한 확장 자를 준비해 두었다. 확장자만 ‘ascx’ 일뿐 aspx 페이지와 거의 동일 하다. 심지어 기존에 제작해 둔 aspx 페이지를 ascx로 변환도 가능 하다. 즉 사용자 정의 컨트롤은 ascx 확장 자를 가진 사용자 정의 컨트롤 파일과 ascx.cs 확장자를 가진 Code Behind 파일을 가질 수 있으며, 물론 단일 파일로도 구성이 가능 하다. 사용자 정의 컨트롤은 <%@ Control ~~~ %> 지시어 부, <script> 부, <Table>등의 요소부로 구성 된다. 네임 스페이스의 등록 사용이 가능 하며 이벤트 핸들러의 사용도 가능 하다. 또한 사용자 정의 컨트롤은 웹 페이지의 일부 이므로 <HTML></HTML>은 없다. 사용자 정의 컨트롤 내에 여러 가지 서버 컨트롤을 포함 시켜 하나의 컨트롤 처럼 만들어 웹 페이지에 인스턴스를 만들어 사용 할 수 있다.
-----------------------
사용자 정의 컨트롤의 제작
-----------------------
1.새 프로젝트를 시작 하고 C# , ASP.NET 웹 응용 프로그램을 선택
(프로젝트 이름은 MyControl로 하자)
2.프로젝트에서 마우스 오른쪽 버튼을 눌러 새항목 추가 웹 사용자 정의 컨트롤을 선택 한다. (파일의 이름을 “CopyRight.ascx”로 하자.)
3.웹 폼 페이지와 비슷한 화면이 나타나는데 기존 웹 폼을 만들 때와 비슷하게 동작한다. 여러 서버 컨트롤을 올려 놓을 수도 있고, 해당 서버 컨트롤들의 이벤트 코드도 기존과 동일 한 방식으로 작성 할 수 있다. 단지 주의해야 할 점이 있다면 이 페이지는 <HTML> 이나 <BODY>, <FORM> 태그는 가질 수 없다는 것이다. 이 페이지는 웹폼 페이지에 포함 되어 짐으로 그러하다. 현재의 VS.NET 디자이너 모드를 HTML 모드로 바꾼 후 아래의 코드가 보일 것이다.
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="CopyRight.ascx.cs" Inherits="MyControl.CopyRight" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
지시자의 시작이 @Page가 아닌 @Control로 코드가 시작 하고 있음을 확인 할 수 있다. @Control은 ASP.NET 페이지 파서 및 컴파일러에게 알려주는 사용자 정의 컨트롤(ascx) 관련 특성을 규정 하는 구역으로 ASP.NET 웹 페이지의 @Page와 동일한 기능을 수행 한다고 보면 된다.
이제 HTML을 작성해 보자(아래 처럼)
<hr align="center" size="1" color="black" width="95%">
<p align="center">
©CopyRight 2004 <a href="http://www.oraclejavanew.kr">OracleJava</a>
All Right Reserved.
</p>
간단한 HTML 문장이다. 첫 번째 예제는 간단히 만들어 보도록 하자. 이제 완료가 되었으니 컨트롤을 사용해 보도록 하자. 자체적으로는 실행 될 수 없으니 실행을 위해서는 반드시 호스트 되어 져야 한다. 이제 솔루션 탐색기에서 새로운 새 폼을 추가 하여 (기존에 있는 Webform1.aspx 를 이용해도 무방 하다.) 이름을 CopyRightTest.aspx 라고 하자.
4.사용자 정의 컨트롤을 추가 하기 위해서 웹 폼 페이지의 상단에 아래의 코드를 추가 해야 한다.
<%@ Register TagPrefix=”UC” TabName=”CopyRight” Src=”CopyRight.ascx” %>
이 부분은 웹페이지에 사용자 정의 컨트롤을 등록하는 코드 이다. 등록이란 사용자 정의 컨트롤을 웹 페이지가 식별이 가능 하도록 접두어(prefix)를 부여 하고 소스 파일의 경로를 지정 하는 것을 말한다. 이를 위해서는 @Register 라는 지시어를 사용 해야 한다. @Register는 3가지의 속성이 있는데 이중 TagPrefix는 사용자 정의 컨트롤을 웹페이지에 등록 할 때 사용할 접두어를 의미하고 TagName은 컨트롤의 이름을, Src에는 이 컨트롤 파일의 경로를 지정 해야 한다.
사용자 정의 컨트롤을 등록 하는 것을 알았으니 이제는 살제 컨트롤이 들어 갈 위치에 어떻게 삽입 되는지 확인해 보자.
<UC:CopyRight id=”cr1” runat=”server”>
정리한 웹 폼의 HTML 소스 코드는 다음과 같다.
<%@ Page language="c#" codebehind="CopyRightTest.aspx.cs" Inherits="MyControl.WebForm1" AutoEventWireup="false" %>
<%@ Register TagPrefix="UC" TagName="CopyRight" Src="CopyRight.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>CopyRightTest</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<UC:CopyRight id="cr1" runat="server"></UC:CopyRight>
</form>
</body>
</HTML>
사용자 정의 컨트롤이 <form> 태그 안쪽에 오는 것을 유심히 보자. 지금과 같이 서버 컨트롤이 없는 경우엔 <form> 밖에 와도 무방 하지만 대부분의 경우 ASP.NET Server Control을 이용 하므로 <form> 태그 내부에 위치 해야 한다.
5. 이제 실행해 보도록 하자.
사용자 정의 컨트롤은 반복해서 사용하는 UI를 별도의 컨트롤 파일로 분리하기 위해 사용 하며 동작하는 방식은 ASP.NET 페이지와 동일 하지만 페이지의 일부로서 구성되는 컨트롤 이다. 결국 ASP.NET 사용자 정의 컨트롤은 ASP.NET 페이지의 일부를 컨트롤화 한 것 이라고 보면 된다.
사용자 정의 컨트롤은 유저 컨트롤(Web User Control) 이라고 하며 웹 페이지의 일부로 <HTML> 태그 블록을 포함 하지는 않지만 스크립트와 HTML 요소를 포함 할 수 있는 것이다. 그러나 웹 페이지의 일부 이므로 독립적인 실행은 불 가능 하다. 한번 작성된 컨트롤은 여러 페이지나 여러 곳에 사용 될 수 있다.
이 컨트롤을 사용하는 대표적인 이유는 각각의 페이지에서 반복적으로 사용되는 고정적인 어떤 독립 모듈을 위해서 이다. 예를 들어 사이트 하단에 위치하는 CopyRight 문구, 사이트 상단의 고정적인 메뉴 등을 위해서 쓰일 수 있는 것이다. 대부분의 사이트에서 메뉴를 쉽게 관리 하기 위해 메뉴 페이지를 모든 웹페이지에 반복적으로 하드 코딩 하기 보다는 분리된 프레임 구조로 나누어서 처리 하곤 한다.
일관성을 위해 프레임을 이용하는 것은 나쁜 구조는 아니지만 프레임에 의존 하는 사이트는 Contents의 양이 늘어나는 경우 확장 하거나 관리가 어렵다는 단점이 있다. 특히 하나의 페이지 내에서 데이터 교환을 할 경우 발생 하지 않는 문제가 프레임으로 나눌 경우 생기게 되어 불편 함을 야기 한다. 이럴 경우 사용자 컨트롤을 이용하게 되면 유용하게 해결 할 수 있다.
ASP.NET에서 사용자 컨트롤은 자그마한 ASP.NET 페이지 이다. 작은 페이지와 같은 개념이므로 사용자 정의 컨트롤의 작성은 ASP.NET 페이지를 만드는 것과 동일 하며 차이점이 있다면 실행 될 수 없다는 것이다. 이 또한 어쨌든 컨트롤 이므로 이를 호스트 하는 웹 페이지가 반드시 존재해야 한다는 것이다.
ASP.NET은 사용자 정의 컨트롤을 위해 ‘ascx’ 라는 특별한 확장 자를 준비해 두었다. 확장자만 ‘ascx’ 일뿐 aspx 페이지와 거의 동일 하다. 심지어 기존에 제작해 둔 aspx 페이지를 ascx로 변환도 가능 하다. 즉 사용자 정의 컨트롤은 ascx 확장 자를 가진 사용자 정의 컨트롤 파일과 ascx.cs 확장자를 가진 Code Behind 파일을 가질 수 있으며, 물론 단일 파일로도 구성이 가능 하다. 사용자 정의 컨트롤은 <%@ Control ~~~ %> 지시어 부, <script> 부, <Table>등의 요소부로 구성 된다. 네임 스페이스의 등록 사용이 가능 하며 이벤트 핸들러의 사용도 가능 하다. 또한 사용자 정의 컨트롤은 웹 페이지의 일부 이므로 <HTML></HTML>은 없다. 사용자 정의 컨트롤 내에 여러 가지 서버 컨트롤을 포함 시켜 하나의 컨트롤 처럼 만들어 웹 페이지에 인스턴스를 만들어 사용 할 수 있다.
-----------------------
사용자 정의 컨트롤의 제작
-----------------------
1.새 프로젝트를 시작 하고 C# , ASP.NET 웹 응용 프로그램을 선택
(프로젝트 이름은 MyControl로 하자)
2.프로젝트에서 마우스 오른쪽 버튼을 눌러 새항목 추가 웹 사용자 정의 컨트롤을 선택 한다. (파일의 이름을 “CopyRight.ascx”로 하자.)
3.웹 폼 페이지와 비슷한 화면이 나타나는데 기존 웹 폼을 만들 때와 비슷하게 동작한다. 여러 서버 컨트롤을 올려 놓을 수도 있고, 해당 서버 컨트롤들의 이벤트 코드도 기존과 동일 한 방식으로 작성 할 수 있다. 단지 주의해야 할 점이 있다면 이 페이지는 <HTML> 이나 <BODY>, <FORM> 태그는 가질 수 없다는 것이다. 이 페이지는 웹폼 페이지에 포함 되어 짐으로 그러하다. 현재의 VS.NET 디자이너 모드를 HTML 모드로 바꾼 후 아래의 코드가 보일 것이다.
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="CopyRight.ascx.cs" Inherits="MyControl.CopyRight" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
지시자의 시작이 @Page가 아닌 @Control로 코드가 시작 하고 있음을 확인 할 수 있다. @Control은 ASP.NET 페이지 파서 및 컴파일러에게 알려주는 사용자 정의 컨트롤(ascx) 관련 특성을 규정 하는 구역으로 ASP.NET 웹 페이지의 @Page와 동일한 기능을 수행 한다고 보면 된다.
이제 HTML을 작성해 보자(아래 처럼)
<hr align="center" size="1" color="black" width="95%">
<p align="center">
©CopyRight 2004 <a href="http://www.oraclejavanew.kr">OracleJava</a>
All Right Reserved.
</p>
간단한 HTML 문장이다. 첫 번째 예제는 간단히 만들어 보도록 하자. 이제 완료가 되었으니 컨트롤을 사용해 보도록 하자. 자체적으로는 실행 될 수 없으니 실행을 위해서는 반드시 호스트 되어 져야 한다. 이제 솔루션 탐색기에서 새로운 새 폼을 추가 하여 (기존에 있는 Webform1.aspx 를 이용해도 무방 하다.) 이름을 CopyRightTest.aspx 라고 하자.
4.사용자 정의 컨트롤을 추가 하기 위해서 웹 폼 페이지의 상단에 아래의 코드를 추가 해야 한다.
<%@ Register TagPrefix=”UC” TabName=”CopyRight” Src=”CopyRight.ascx” %>
이 부분은 웹페이지에 사용자 정의 컨트롤을 등록하는 코드 이다. 등록이란 사용자 정의 컨트롤을 웹 페이지가 식별이 가능 하도록 접두어(prefix)를 부여 하고 소스 파일의 경로를 지정 하는 것을 말한다. 이를 위해서는 @Register 라는 지시어를 사용 해야 한다. @Register는 3가지의 속성이 있는데 이중 TagPrefix는 사용자 정의 컨트롤을 웹페이지에 등록 할 때 사용할 접두어를 의미하고 TagName은 컨트롤의 이름을, Src에는 이 컨트롤 파일의 경로를 지정 해야 한다.
사용자 정의 컨트롤을 등록 하는 것을 알았으니 이제는 살제 컨트롤이 들어 갈 위치에 어떻게 삽입 되는지 확인해 보자.
<UC:CopyRight id=”cr1” runat=”server”>
정리한 웹 폼의 HTML 소스 코드는 다음과 같다.
<%@ Page language="c#" codebehind="CopyRightTest.aspx.cs" Inherits="MyControl.WebForm1" AutoEventWireup="false" %>
<%@ Register TagPrefix="UC" TagName="CopyRight" Src="CopyRight.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>CopyRightTest</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<UC:CopyRight id="cr1" runat="server"></UC:CopyRight>
</form>
</body>
</HTML>
사용자 정의 컨트롤이 <form> 태그 안쪽에 오는 것을 유심히 보자. 지금과 같이 서버 컨트롤이 없는 경우엔 <form> 밖에 와도 무방 하지만 대부분의 경우 ASP.NET Server Control을 이용 하므로 <form> 태그 내부에 위치 해야 한다.
5. 이제 실행해 보도록 하자.
오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급
www.oraclejavacommunity.com
평일주간(9:30~18:10) 개강
(7/14)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/14)[기업100%환급]SQL기초에서 Schema Object까지
(7/14)[기업100%환급]안드로이드개발자과정
(7/21)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(7/21)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(7/21)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(7/21)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
평일야간(19:00~21:50) 개강
(7/09)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(7/15)SQL기초에서실무까지
(7/15)안드로이드개발자과정
(7/16)Spring3.X, MyBatis, Hibernate실무과정
(7/21)웹퍼블리싱 마스터
(7/22)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(8/05)MyBatis3.X, Hibernate4.X ORM실무과정
주말(10:00~17:50) 개강
(7/12)SQL초보에서 Schema Object까지
(7/12)개발자를위한PLSQL,SQL튜닝,힌트
(7/13)C#,ASP.NET마스터
(7/19)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/19)Spring3.X, MyBatis, Hibernate실무과정
(7/19)웹퍼블리싱 마스터
(7/19)안드로이드개발자과정
(8/02)MyBatis3.X, Hibernate4.X ORM실무과정
(8/09)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말저녁(18:30~22:20) 개강
(8/02)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지
www.oraclejavacommunity.com
평일주간(9:30~18:10) 개강
(7/14)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/14)[기업100%환급]SQL기초에서 Schema Object까지
(7/14)[기업100%환급]안드로이드개발자과정
(7/21)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(7/21)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(7/21)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(7/21)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
평일야간(19:00~21:50) 개강
(7/09)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(7/15)SQL기초에서실무까지
(7/15)안드로이드개발자과정
(7/16)Spring3.X, MyBatis, Hibernate실무과정
(7/21)웹퍼블리싱 마스터
(7/22)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(8/05)MyBatis3.X, Hibernate4.X ORM실무과정
주말(10:00~17:50) 개강
(7/12)SQL초보에서 Schema Object까지
(7/12)개발자를위한PLSQL,SQL튜닝,힌트
(7/13)C#,ASP.NET마스터
(7/19)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/19)Spring3.X, MyBatis, Hibernate실무과정
(7/19)웹퍼블리싱 마스터
(7/19)안드로이드개발자과정
(8/02)MyBatis3.X, Hibernate4.X ORM실무과정
(8/09)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말저녁(18:30~22:20) 개강
(8/02)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지
댓글 없음:
댓글 쓰기