개발/ASP.NET

[Web Form] HTML 소스에서 바로 사용할 수 있는 ASP.NET 코드 표시 방법

향포레스트 2023. 1. 29. 18:02
728x90

HTML 소스에서 ASP.NET 서버 코드를 표현할 수 있습니다. ASP.NET inline expressions에는 아래와 같은 표현법이 있습니다.

  • <% ... %>
  • <%= ... %>
  • <%@ ... %>
  • <%# ... %>
  • <%$ ... %>
  • <%-- ... --%>

<% ... %> 

블록의 코드는 페이지 렌더링 단계 중에 프로그래밍 문을 실행하고 현재 페이지 클래스에서 함수를 호출할 수 있습니다.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TEST.aspx.cs" Inherits="Board_TEST" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
 <% if (true) {%>
   표시
<% }%>

<% if (false) {%>
   표시X
<% }%>
</body>
</html>

 

<%= ... %> 

코드 비하인드 파일에서 사용하는 Response.Write(...) 코드와 동일합니다. 단일 문자열, int 변수 또는 상수와 같은 정보를 표시하는 가장 간단한 방법입니다. 단 서버 컨트롤 특성에서는 사용할 수 없습니다. 전체 식을 직접 컴파일하기 때문입니다.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TEST.aspx.cs" Inherits="Board_TEST" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
 <form id="form1" runat="server">
    <%= DateTime.Now.ToString() %>
 </form>
</body>
</html>

 

<%@ ... %>

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TEST.aspx.cs" Inherits="Board_TEST" %>
<%@ Register Src="~/Common/BreadCrumbComponent.ascx" TagPrefix="uc1" TagName="BreadCrumbComponent" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
 <form id="form1" runat="server">
 </form>
</body>
</html>

@ Page

ASP.NET 페이지 파서 및 컴파일러에서 사용하는 페이지별 특성을 정의합니다. ASP.NET Web Forms 페이지에서만 사용할 수 있으며 .aspx 파일에만 포함할 수 있습니다.

 

@ Control

ASP.NET 페이지 파서 및 컴파일러에서 사용하는 컨트롤별 특성을 정의합니다. .ascx 파일(사용자 컨트롤)에만 포함할 수 있습니다.

 

@ Import

네임스페이스를 페이지 또는 사용자 컨트롤로 명시적으로 가져옵니다.

 

@ Implements

페이지 또는 사용자 컨트롤이 지정된 .NET Framework 인터페이스를 구현한다는 것을 선언적으로 나타냅니다.

 

@ Register

별칭을 네임스페이스와 클래스 이름과 연결합니다. 사용자 정의 컨트롤 및 사용자 지정 서버 컨트롤이 요청된 페이지 또는 사용자 정의 컨트롤에 포함될 때 렌더링될 수 있습니다.

 

@ Assembly
컴파일하는 동안 어셈블리를 현재 페이지에 연결합니다. 이렇게 하면 모든 어셈블리의 클래스 및 인터페이스를 페이지에서 사용할 수 있습니다.

 

@ Master
ASP.NET 마스터 페이지를 식별합니다.

 

@ WebHandler
ASP.NET IHttpHandler 페이지를 식별합니다.

@ PreviousPageType
PreviousPage 속성을 통해 액세스한 이전 페이지에 대해 강력한 입력을 가져오는 방법을 제공합니다.

@ MasterType
ASP.NET 페이지의 Master 속성에 클래스 이름을 할당합니다. ASP.NET 마스터 페이지에 대한 강력한 형식의 참조를 만드는 방법을 제공합니다.

@ OutputCache
페이지 또는 사용자 컨트롤의 출력 캐싱 정책을 선언적으로 제어합니다.

@ Reference
페이지 또는 사용자 컨트롤을 현재 페이지 또는 사용자 컨트롤에 선언적으로 연결합니다.

 

<%# ... %> 

서버 컨트롤의 DataBind 메서드가 페이지에서 호출되면 서버 컨트롤 속성과 데이터 원본 간에 바인딩을 만듭니다.

<asp:ListView ID="lvList" runat="server" ItemPlaceholderID="phItemList" OnItemDataBound="lvList_ItemDataBound">
  <LayoutTemplate>
  <table class="table table-responsive table-hover w-100 align-middle">
    <thead>
    	<tr>
        	<th class="text-center">ID</th>
            <th class="text-center">제목</th>
        </tr>
    </thead>
    <tbody>
        <asp:PlaceHolder ID="phItemList" runat="server" />
    </tbody>
  </table>
  </LayoutTemplate>
  <ItemTemplate>
    <tr> 
        <td class="text-center"><%#Eval("ID")%></td>
        <td><%#Eval("Title")%></td>
    </tr>
  </ItemTemplate>  
</asp:ListView>

 

<%$ ... %>

<%$ Expression Prefix: Expression Value %>

애플리케이션의 구성 또는 리소스 파일에 포함된 정보를 기반으로 컨트롤 속성의 값을 설정하는 데 사용됩니다. 콜론 뒤에 있는 식 값(:) 는 ASP.NET 실제로 특정 속성의 값으로 사용할 것입니다.

 

Web.config

<appSettings>
    <add key="copyright" value="(c) Copyright 2023 "/>
</appSettings>

 

ASP.NET

<div id="footer">
    <asp:Literal ID="Literal1" runat="server" Text="<%$ AppSettings: copyright %>"></asp:Literal>
</div>

 

<%--  ... --%>

HTML 소스에서 서버 코드 주석을 포함할 수 있습니다. 주석 블록을 사용하면 모든 콘텐츠는 서버에서 처리되어 결과 페이지에서 렌더링 되지 않습니다.

<%-- 주석 시작--%>
<%-- 주석 끝 --%>

 

728x90