ASP.NET 웹 양식 페이지는 확장명이 .aspx인 선언적 텍스트 파일입니다. 정적 콘텐츠 외에도 8가지 다른 구문을 사용하여 요소를 표시할 수 있습니다. 이 섹션에서는 이러한 구문 요소를 검토하고 사용 방법에 대한 몇 가지 예를 제공합니다.
렌더링 코드 구문: <% %> 및 <%= %>
코드 렌더링 블록은 <% ... %> 요소로 표시되며, 이를 통해 렌더링된 콘텐츠를 제어할 수 있고 Web Forms 페이지의 표시 단계에서 실행됩니다. 실행. 다음 예제에서는 이를 사용하여 HTML 콘텐츠를 반복하는 방법을 보여줍니다.
<%@ 페이지 언어="VB" %>
<html>
<본문>
<% Dim I을 정수로 표시
I=0~7%의 경우>
<글꼴 크기="<%=I%>"> Hello World! </font> <br>
<%다음 %>
</본문>
</html>
<% ... %>에 포함된 코드는 실행만 되고, 등호(<%= ... %>)가 포함된 표현식은 내용이 표시될 때 결과를 계산합니다. 따라서 <%="Hello World" %>는 C# 코드 <% Response.Write("Hello World" %>)와 동일한 결과를 표시합니다.
언어에서는 명령문을 종료하거나 구분하기 위해 마커(예: C#의 세미콜론 ;)를 사용해야 하므로 이러한 마커를 올바르게 배치하는 것이 중요합니다.
C# 코드
<% Response.Write("Hello World") %>에서는 문을 종료하려면 세미콜론이 필요합니다.
<%="Hello World"; %> 오류: "Response.Write("Hello World";);"가 발생합니다.
<%="Hello World" %> 세미콜론은 필요하지 않습니다.
코드 선언 구문: <script runat="server">
코드 선언 블록은 Page 클래스로 컴파일될 멤버 변수와 메서드를 정의합니다. 이러한 블록은 페이지 및 탐색 논리를 구축하는 데 사용될 수 있습니다. 다음 예제에서는 <script runat="server"> 블록에서 Subtract 메서드를 정의한 다음 페이지에서 호출하는 방법을 보여줍니다.
<html>
<스크립트 언어="VB" runat=서버>
함수 빼기(Num1을 정수로, Num2를 정수로)를 정수로
숫자1~숫자2를 반환합니다.
기능 종료
</script>
<본문>
<%
정수형의 희미한 숫자 = 100
숫자 > 0인 동안 수행
Response.Write("값: " & 숫자 & "<br>")
숫자 = 빼기(숫자, 1)
고리
%>
</본문>
</html>
참고: ASP와 달리 ASP에서는 함수가 <% %> 블록에 정의되어야 합니다. 모든 함수와 전역 변수는 <script runat=server> 태그를 사용하여 정의되어야 합니다. <% %> 블록의 함수 선언은 구문 컴파일 오류 메시지를 표시합니다.
서버 컨트롤 구문
사용자 정의된 ASP.NET 서버 컨트롤을 통해 페이지 개발자는 HTML 사용자 인터페이스를 동적으로 생성하고 클라이언트 요청에 응답할 수 있습니다. 이는 선언적 마크업 기반 구문을 사용하여 파일로 표현됩니다. 이러한 태그는 "runat=server" 속성을 포함한다는 점에서 다른 태그와 다릅니다. 다음 예제에서는 ASP.NET 페이지에서 <asp:label runat="server"> 서버 컨트롤을 사용하는 방법을 보여줍니다. 이 컨트롤은 System.Web.UI.WebControls 네임스페이스의 Label 클래스에 해당합니다.
ID가 "Message"인 태그를 추가하면 런타임 시 Label 인스턴스가 생성될 수 있습니다.
<asp:label id="Message" Font-size=24 runat="server"/>
이 이름을 사용하여 컨트롤에 액세스할 수 있습니다. . 다음 코드는 컨트롤의 Text 속성을 설정합니다.
Message.Text = "ASP.NET에 오신 것을 환영합니다"
<html>
<스크립트 언어="VB" runat=서버>
하위 페이지_로드(개체로 보낸 사람, EventArgs로 E)
Message.Text = "ASP.NET에 오신 것을 환영합니다"
서브 끝
</스크립트>
<본문>
<asp:label id="Message" 글꼴 크기=24 runat=server/>
</본문>
</html>
HTML 서버 제어 구문
HTML 서버 제어를 통해 개발자는 페이지의 HTML 요소를 프로그래밍 방식으로 작동할 수 있습니다. HTML 서버 제어 태그는 "runat=server" 속성을 갖는다는 점에서 클라이언트 HTML 요소와 다릅니다. 다음 예제에서는 ASP.NET 페이지에서 HTML <span runat=server> 서버 컨트롤을 사용하는 방법을 보여줍니다.
<html>
<스크립트 언어="VB" runat=서버>
하위 페이지_로드(개체로 보낸 사람, EventArgs로 E)
Message.InnerHtml = "ASP.NET에 오신 것을 환영합니다"
서브 끝
</스크립트>
<본문>
<span id="Message" style="font-size:24" runat=server/>
</본문>
</html>
데이터 바인딩 구문: <%# %>
ASP.NET의 기본 제공 데이터 바인딩 지원을 통해 페이지 개발자는 컨트롤 속성을 데이터 컨테이너 값에 계층적으로 바인딩할 수 있습니다. <%# %> 코드 블록의 코드는 해당 상위 컨트롤 컨테이너의 DataBind 메서드가 호출될 때만 실행됩니다. 다음 예제에서는 <asp:datalist runat=server> 컨트롤에서 데이터 바인딩 구문을 사용하는 방법을 보여줍니다.
이 데이터 목록에서 각 항목에는 템플릿이 할당됩니다. 항목 템플릿의 콘텐츠는 데이터 바인딩 식을 사용하여 지정되며 Container.DataItem은 MyList 데이터 목록에서 사용되는 데이터 소스를 가리킵니다.
<asp:datalist id="MyList" runat=서버>
<아이템템플릿>
값은 다음과 같습니다: <%# Container.DataItem %>
</아이템템플릿>
</asp:datalist>
이 경우 MyList 컨트롤의 데이터 소스는 프로그래밍 방식으로 설정된 다음 DataBind() 메서드가 호출됩니다.
컨트롤의 DataBind 메서드를 호출하면 재귀 트리가 트리거됩니다(컨트롤부터 시작하여 트리의 하위 컨트롤까지). 계층 구조에 있는 각 서버 컨트롤의 DataBinding 이벤트가 발생하고 컨트롤 값의 데이터 바인딩 그에 따라 계산됩니다. 따라서 페이지의 DataBind 메서드가 호출되면 페이지의 모든 데이터 바인딩 식이 호출됩니다.
<html>
<스크립트 언어="VB" runat=서버>
하위 페이지_로드(개체로 보낸 사람, EventArgs로 E)
항목을 새 ArrayList로 흐리게 표시
Items.Add("하나")
Items.Add("2")
Items.Add("3")
MyList.DataSource = 항목
MyList.DataBind()
끝 서브
</script>
<본문>
<asp:datalist id="MyList" runat=서버>
<아이템템플릿>
값은 다음과 같습니다: <%# Container.DataItem %>
</아이템템플릿>
</asp:데이터목록>
</본문>
</html>
ASP.NET 2.0에는 페이지 코드에서 DataBind()를 호출하지 않고도 컨트롤이 데이터 소스 컨트롤에 자동으로 데이터 바인딩할 수 있도록 하는 단순화된 새로운 데이터 바인딩 구문도 포함되어 있습니다. 이 구문은 "데이터 액세스 수행" 장에서 설명됩니다.
개체 태그 구문: <object runat="server" />
개체 태그를 통해 페이지 개발자는 선언적 태그 기반 구문을 사용하여 변수 인스턴스를 선언하고 생성할 수 있습니다. 다음 예제에서는 객체 표기법을 사용하여 ArrayList 클래스의 인스턴스를 만드는 방법을 보여줍니다.
이 객체는 런타임 시 자동으로 생성되며 ID "items"를 통해 액세스할 수 있습니다.
<html>
<스크립트 언어="VB" runat=서버>
하위 페이지_로드(ByVal 보낸 사람을 개체로, ByVal E를 EventArgs로)
ArrayItems.Add("하나")
ArrayItems.Add("2")
ArrayItems.Add("3")
MyList.DataSource = 배열항목
MyList.DataBind()
서브 끝
</script>
<본문>
<object id="ArrayItems" class="System.Collections.ArrayList" runat=server/>
<asp:datalist id="MyList" runat=서버>
<아이템템플릿>
값은 다음과 같습니다: <%# Container.DataItem %>
</아이템템플릿>
</asp:데이터목록>
</본문>
</html>
서버측 주석 구문: <%-- Comment --%>
서버측 주석을 사용하면 페이지 개발자가 서버 코드(서버 컨트롤 포함) 및 정적 콘텐츠의 실행 및 렌더링을 방지할 수 있습니다. 다음 예에서는 콘텐츠가 실행되어 클라이언트로 전송되는 것을 방지하는 방법을 보여줍니다. <%--와 --%> 사이의 모든 정보는 필터링되어 다른 ASP.NET 지시어가 포함되어 있더라도 원본 서버 파일에만 표시됩니다.
<html>
<본문>
아래 내용은 서버 측 주석을 사용하여 브라우저 클라이언트에서 숨겨졌습니다.
(무슨 뜻인지 보려면 .aspx 소스를 확인하세요 :-)
<%--
<asp:calendar id="MyCal" runat=서버/>
<I에 대한 % = 0~44%>
헬로 월드 <br>
<%다음%>
--%>
</본문>
</html>
서버측 파일 포함 구문: <-- #Include File="Locaton.inc" -->
서버측 파일 포함(#Include)을 사용하면 개발자가 ASP의 어느 위치에나 특정 파일의 콘텐츠를 삽입할 수 있습니다. NET 페이지. 다음 예에서는 사용자 정의 제목과 바닥글을 페이지에 삽입하는 방법을 보여줍니다.
<html>
<본문>
<!-- #Include File="Header.inc" -->
<br />
<h3> 메인 페이지 내용 </h3>
<br />
<!-- #Include File="Footer.inc" -->
</본문>
</html>
식 구문: <%$ ... %>2.0
ASP.NET 2.0의 새로운 기능은 페이지 분석 전에 값 대체를 위한 새로운 선언적 식 구문을 추가합니다. 이는 서버 제어 속성 값을 Web.config 파일의 연결 문자열 값이나 응용 프로그램 설정으로 바꿔야 할 때 매우 유용합니다. 현지화 중에 리소스 파일의 값을 바꾸는 데에도 사용할 수 있습니다.
<asp:SqlDataSource ID="SqlDataSource1" ConnectionString='<%$ ConnectionStrings:Pubs %>' runat="server" SelectCommand="sp_GetAuthors" />
<asp:Label ID="Label1" Text='<%$ 리소스: ExchRate, ConvertLabel %>' runat="server"/>