ASP.NET 웹 페이지 구문 개요
업데이트: 2007년 11월
ASP.NET 웹 페이지는 서버 기반 처리를 포함하지 않는 정적 HTML 웹 페이지와 비슷한 방식으로 만들어지지만 페이지를 실행할 때 ASP.NET에서 인식하고 처리하는 추가 요소를 포함합니다. 다음은 ASP.NET 웹 페이지를 정적 HTML 또는 다른 페이지와 구분할 수 있는 특징입니다.
파일 이름 확장명이 .htm, .html 또는 다른 확장명 대신 .aspx입니다. .aspx 파일 이름 확장명을 사용하면 ASP.NET에서 페이지를 처리합니다.
참고: 파일 이름 확장명과 ASP.NET 간의 매핑이 IIS(인터넷 정보 서비스)에서 수행됩니다. 기본적으로 .aspx 페이지는 ASP.NET에서 실행되고 .htm 및 .html 페이지는 실행되지 않습니다.
선택적 @ Page 지시문 또는 만들고 있는 페이지의 형식에 적합한 다른 지시문을 사용합니다.
ASP.NET에 맞게 구성된 form 요소를 사용합니다. form 요소는 페이지를 처리하는 동안 사용할 값을 포함하는 컨트롤이 페이지에 있는 경우에만 필요합니다.
웹 서버 컨트롤을 포함합니다.
페이지에 직접 코드를 추가하는 경우 서버 코드를 사용합니다.
참고: XHTML 표준에 맞는 페이지를 작성하려면 DOCTYPE 같은 추가 요소를 포함해야 합니다. 자세한 내용은 ASP.NET 및 XHTML을 참조하십시오.
아래 단원에서는 이러한 각 요소에 대해 자세하게 설명합니다.
.aspx 파일 이름 확장명을 사용하여 HTML 페이지의 이름을 바꿀 수 있으며 이 페이지는 ASP.NET 웹 페이지로 실행됩니다. 그러나 서버 처리가 포함되지 않은 페이지의 경우 .aspx 파일 이름 확장명을 추가하면 페이지 처리에 오버헤드가 추가되므로 이름을 바꿀 필요가 없습니다.
예제 ASP.NET 웹 페이지
다음 코드 예제에서는 ASP.NET 웹 페이지를 구성하는 기본 요소가 포함된 페이지를 보여 줍니다. 이 페이지에는 ASP.NET에만 해당하는 요소와 함께 HTML 페이지에서와 같은 정적 텍스트가 포함되어 있습니다. 이 중에서 ASP.NET에만 해당하는 요소는 강조 표시됩니다.
참고: |
---|
쉽게 구별할 수 있도록 이 예제 페이지는 XHTML 규격에 대해 구성되어 있지 않습니다. 자세한 내용은 ASP.NET 및 XHTML을 참조하십시오. |
보안 정보: |
---|
이 예제 페이지에는 사용자 입력을 허용하는 텍스트 상자가 있으므로 보안상 위험할 수 있습니다. 기본적으로 ASP.NET 페이지에서는 사용자 입력 내용에 스크립트나 HTML 요소가 포함되어 있지 않은지 유효성을 검사합니다. 자세한 내용은 스크립트 악용 개요를 참조하십시오. |
<%@ Page Language="VB" %>
<html>
<script > Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Label1.Text = "Welcome, " & TextBox1.Text End Sub</script>
<head >
<title>Basic ASP.NET Web Page</title>
</head>
<body>
<form id="form1" >
<h1>Welcome to ASP.NET</h1>
<p>Type your name and click the button.</p>
<p>
<asp:TextBox ID="TextBox1" ></asp:TextBox><asp:Button ID="Button1" Text="Click" OnClick="Button1_Click" />
</p>
<p>
<asp:Label ID="Label1" ></asp:Label>
</p>
</form>
</body>
</html>
<%@ Page Language="C#" %>
<html>
<script >Void Button1_Click(object sender, System.EventArgs e) { Label1.Text = ("Welcome, " + TextBox1.Text);}</script>
<head >
<title>Basic ASP.NET Web Page</title>
</head>
<body>
<form id="form1" >
<h1>Welcome to ASP.NET</h1>
<p>Type your name and click the button.</p>
<p>
<asp:TextBox ID="TextBox1" ></asp:TextBox> <asp:Button ID="Button1" Text="Click" OnClick="Button1_Click" />
</p>
<p>
<asp:Label ID="Label1" ></asp:Label>
</p>
</form>
</body>
</html>
@ 지시문
일반적으로 ASP.NET 페이지에는 페이지 속성과 페이지의 구성 정보를 지정하는 데 사용할 수 있는 지시문이 포함되어 있습니다. 이러한 지시문은 ASP.NET에서 페이지 처리 방법에 대한 명령으로 사용되지만 브라우저에 전달되는 태그의 일부로 렌더링되지 않습니다.
다음 항목을 포함하여 페이지에 대한 대부분의 구성 옵션을 지정하는 데 사용할 수 있는 @ Page 지시문이 가장 일반적으로 사용됩니다.
페이지의 코드에 대한 서버 프로그래밍 언어
페이지에 직접 서버 코드를 작성하는 페이지(단일 파일 페이지)인지 아니면 별도의 클래스 파일에 코드를 작성하는 페이지(코드 숨김 페이지)인지를 지정하는 옵션. 앞에 나오는 예제의 페이지는 단일 파일 페이지이므로 코드가 페이지에 직접 나타나며 링크된 클래스 파일에 대한 정보가 @ Page 지시문에 포함되어 있지 않습니다. 자세한 내용은 이 항목의 뒷부분에 나오는 "서버 코드" 단원 및 ASP.NET 웹 페이지 코드 모델을 참조하십시오.
디버깅 및 추적 옵션
페이지에 마스터 페이지가 연결되어 있는지 그리고 연결되어 있는 경우 콘텐츠 페이지로 처리할지 여부
페이지에 @ Page 지시문이 없거나 지시문에 특정 설정이 포함되지 않은 경우에는 웹 응용 프로그램의 구성 파일(Web.config 파일) 또는 사이트 구성 파일(Machine.config 파일)에서 설정이 상속됩니다.
@ Page 지시문 외에도 페이지 관련 옵션을 지원하는 다른 지시문을 포함할 수 있습니다. 예를 들면 다음과 같은 지시문을 포함할 수 있습니다.
@ Import 이 지시문을 사용하면 코드에서 참조할 네임스페이스를 지정할 수 있습니다.
@ OutputCache 이 지시문을 사용하면 페이지를 캐시하도록 지정할 수 있습니다. 이때 캐시 시기와 기간을 지정하는 매개 변수도 포함할 수 있습니다.
@ Implements 이 지시문을 사용하면 페이지에서 .NET 인터페이스를 구현하도록 지정할 수 있습니다.
@ Register 이 지시문을 사용하면 페이지에 사용할 추가 컨트롤을 등록할 수 있습니다. @ Register 지시문은 컨트롤의 태그 접두사 및 컨트롤 어셈블리의 위치를 선언합니다. 사용자 정의 컨트롤 또는 사용자 지정 ASP.NET 컨트롤을 페이지에 추가하려는 경우 이 지시문을 사용해야 합니다.
특정 형식의 ASP.NET 파일은 @ Page 이외의 지시문을 사용합니다. 예를 들어 ASP.NET 마스터 페이지는 @ Master 지시문을 사용하고 ASP.NET 사용자 정의 컨트롤은 @ Control 지시문을 사용합니다. 각 지시문을 사용하여 해당 파일에 적합한 다양한 옵션을 지정할 수 있습니다.
자세한 내용은 ASP.NET 마스터 페이지 개요 및 ASP.NET 사용자 정의 컨트롤을 참조하십시오.
Form 요소
사용자가 페이지와 상호 작용하고 페이지를 제출하는 데 사용할 수 있는 컨트롤이 포함된 페이지에는 form 요소가 있어야 합니다. 일반적으로 표준 HTML form 요소를 사용하지만 특정한 규칙이 적용됩니다. 다음은 form 요소를 사용할 때 적용되는 규칙입니다.
페이지에 form 요소가 하나만 있어야 합니다.
form 요소에는 server 값으로 설정된 runat 특성이 포함되어야 합니다. 이 특성을 사용하면 페이지의 컨트롤과 폼을 서버 코드에서 프로그래밍 방식으로 참조할 수 있습니다.
다시 게시를 수행할 수 있는 서버 컨트롤이 form 요소에 포함되어야 합니다.
여는 태그에 action 특성이 포함되면 안 됩니다. ASP.NET에서는 페이지가 처리될 때 이러한 특성을 동적으로 설정하여 가능한 모든 설정을 재정의합니다.
웹 서버 컨트롤
대부분의 ASP.NET 페이지에는 단추, 텍스트 상자, 목록 등과 같이 사용자가 페이지와 상호 작용할 수 있는 컨트롤을 추가합니다. 이러한 웹 서버 컨트롤은 HTML 단추 및 input 요소와 비슷합니다. 그러나 웹 서버 컨트롤은 서버에서 처리되므로 서버 코드를 사용하여 컨트롤 속성을 설정할 수 있습니다. 또한 이러한 컨트롤은 서버 코드에서 처리할 수 있는 이벤트를 발생시킵니다.
서버 컨트롤은 페이지를 실행할 때 ASP.NET에서 인식하는 특수한 구문을 사용합니다. 다음 코드 예제에서는 일반적인 웹 서버 컨트롤을 보여 줍니다.
보안 정보: |
---|
TextBox는 사용자 입력을 허용하므로 보안상 위험할 수 있습니다. 기본적으로 ASP.NET 페이지에서는 사용자 입력 내용에 스크립트나 HTML 요소가 포함되어 있지 않은지 유효성을 검사합니다. 자세한 내용은 스크립트 악용 개요를 참조하십시오. |
<asp:TextBox ID="TextBox1" ></asp:TextBox>
<asp:Button ID="Button1"
Text="Click" OnClick="Button1_Click" />
<asp:TextBox ID="TextBox1" ></asp:TextBox>
<asp:Button ID="Button1"
Text="Click" OnClick="Button1_Click" />
ASP.NET 서버 컨트롤의 태그 이름은 접두사로 시작합니다(이 예제의 경우 asp:). 컨트롤이 .NET Framework의 일부가 아닌 경우에는 접두사가 다를 수 있습니다. 또한 ASP.NET 서버 컨트롤에는 특성이 포함되고 서버 코드에서 컨트롤을 참조하는 데 사용할 수 있는 ID도 선택적으로 포함됩니다.
페이지가 실행되면 서버 컨트롤을 식별하고 이러한 컨트롤과 연결된 코드를 실행합니다. 대부분의 컨트롤은 일부 HTML 또는 다른 태그를 페이지에 렌더링합니다. 예를 들어 asp:textbox 컨트롤은 type="text" 특성이 설정된 input 요소를 페이지에 렌더링합니다. 그러나 웹 서버 컨트롤과 HTML 요소 간에 일대일 매핑이 성립되지 않을 수도 있습니다. 예를 들어 asp:calendar 컨트롤은 HTML 표를 렌더링합니다. 일부 컨트롤은 브라우저에 아무 것도 렌더링하지 않는 대신 서버에서만 처리되고 다른 컨트롤에 정보를 제공합니다.
HTML 요소를 서버 컨트롤로 사용
일반적인 HTML 요소를 ASP.NET 서버 컨트롤 대신 또는 이 컨트롤과 함께 서버 컨트롤로 사용할 수 있습니다. 페이지의 모든 HTML 요소에 및 ID 특성을 추가할 수 있습니다. 페이지가 실행되면 ASP.NET에서는 HTML 요소를 서버 컨트롤로 식별하고 서버 코드에서 사용할 수 있도록 합니다. 예를 들면 다음 코드 예제와 같이 필요한 요소를 HTML body 요소에 추가할 수 있습니다.
<body id="body">
그런 다음 서버 코드에서 body 요소를 참조할 수 있습니다. 예를 들어 사용자 입력 또는 데이터베이스 정보에 대한 응답으로 런타임에 본문 배경색을 설정하려는 경우 이렇게 할 수 있습니다.
자세한 내용은 ASP.NET 웹 서버 컨트롤 개요를 참조하십시오.
서버 코드
대부분의 ASP.NET 페이지에는 페이지를 처리할 때 서버에서 실행되는 코드가 포함되어 있습니다. ASP.NET에서는 C#, Visual Basic, J#, Jscript 등의 많은 언어를 지원합니다.
ASP.NET에서는 두 가지 모델을 사용하여 웹 페이지에 대한 서버 코드를 작성할 수 있습니다. 단일 파일 모델에서는 페이지의 코드가 script 요소에 있습니다. 여기에서는 여는 태그에 특성이 포함되어 있습니다. 이 항목의 앞부분에 나온 예제에서는 단일 파일 모델을 보여 줍니다.
별도의 클래스 파일에 페이지의 코드를 만들 수도 있는데 이 방법을 코드 숨김 모델이라고 합니다. 이 경우에는 일반적으로 ASP.NET 웹 페이지에 서버 코드가 없습니다. 대신 .aspx 페이지를 관련된 코드 숨김 파일과 링크하는 정보가 @ Page 지시문에 포함됩니다. 다음 코드 예제에서는 코드 숨김 파일이 연결되어 있는 페이지의 일반적인 @ Page 지시문을 보여 줍니다.
<%@ Page Language="VB" CodeFile="Default.aspx.vb" Inherits="Default" %>
<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="Default" %>
CodeFile 특성은 별도의 클래스 파일에 대한 이름을 지정하고 Inherits 특성은 코드 숨김 파일에서 페이지에 해당하는 클래스의 이름을 지정합니다.
자세한 내용은 ASP.NET 웹 페이지 코드 모델을 참조하십시오.
참고: |
---|
ASP.NET 웹 페이지에는 클라이언트측 이벤트에 대한 응답으로 브라우저에서 실행되는 클라이언트 스크립트도 포함될 수 있습니다. ASP.NET 페이지에는 클라이언트 스크립트와 서버 코드가 둘 다 포함될 수 있습니다. 자세한 내용은 ASP.NET 웹 페이지의 클라이언트 스크립트를 참조하십시오. |