ASP.NET 식 개요

Visual Studio 2010

업데이트: 2007년 11월

ASP.NET 식은 런타임에 계산된 정보를 기반으로 컨트롤 속성을 설정하는 선언적 방법입니다. 예를 들어, 식을 사용하여 응용 프로그램의 구성 및 리소스 파일 내에 포함된 연결 문자열, 응용 프로그램 설정 및 기타 값에 따라 속성 값을 설정할 수 있습니다. 식은 런타임에 페이지의 선언적 요소가 구문 분석될 때 계산되며, 식에 표시되는 값이 식 구문을 대체합니다. 식은 구문 분석 시 계산되므로 코드에서 식을 동적으로 만들 수 없습니다.

식은 일반적으로 데이터 소스 컨트롤에서 연결 문자열을 참조하기 위해 사용됩니다. 데이터 소스 컨트롤에 속성 값으로 연결 문자열을 직접 포함시키는 대신, 식을 사용하여 구성 파일에서 연결 문자열 위치를 지정할 수 있습니다. 이 식은 런타임에 구성 파일의 연결 문자열을 읽어 계산됩니다. 사용자는 런타임에 결정하려는 모든 속성을 정적 값으로 설정하지 않고 식을 사용하여 설정할 수 있습니다.

식을 사용하면 응용 프로그램을 다음과 같은 방식으로 유지 관리할 수 있습니다.

  • 동적 정보를 선언적으로 참조하면 응용 프로그램 코드를 줄일 수 있습니다. 이렇게 하면 런타임에 속성 값을 설정하는 코드를 작성할 필요가 없습니다.

  • 여러 컨트롤에서 동일한 설정을 다시 사용할 수 있습니다. 예를 들어 Web.config 파일에 연결 문자열을 저장한 후 식을 사용하여 페이지에서 연결 문자열을 참조하는 경우에는 해당 연결 문자열을 사용하는 각 컨트롤에서 연결 문자열을 변경하는 대신 한 중앙 위치에서 연결 문자열을 변경할 수 있습니다.

  • 연결 문자열 자격 증명(또는 기타 응용 프로그램 데이터)과 같은 중요한 데이터는 Web.config 파일에 저장한 후 데이터를 암호화할 수 있습니다.

  • Visual Studio와 같은 비주얼 디자이너로 작업하는 경우에는 디자이너의 도구를 식 작성에 활용할 수 있습니다.

또한 식은 확장 가능하므로 사용자는 자신의 고유 식 구문을 정의할 수 있습니다. 그런 다음 사용자 지정 처리기를 호출하는 식을 만들 수 있습니다. 이 처리기는 사용자 지정 논리를 사용하여 값을 반환합니다.

ASP.NET 식의 기본 구문은 다음과 같습니다.

<%$ expressionPrefix: expressionValue %>

달러 기호($)는 바로 다음에 식이 표시됨을 ASP.NET에 알립니다. 식의 접두사는 AppSettings, ConnectionStrings, Resources 등의 식 형식을 정의합니다. 콜론(:) 다음은 ASP.NET에서 계산할 실제 식의 값입니다.

식 구문이 특정 .NET 언어와만 관련된 것은 아닙니다. ASP.NET 페이지에서 Visual Basic, C# 또는 기타 프로그래밍 언어 중 어떤 언어가 사용되더라도 동일한 식 구문을 사용할 수 있습니다.

일반적으로 식은 Web.config 파일에 저장된 연결 문자열 값에 따라 SqlDataSource 컨트롤과 같은 특정 컨트롤의 연결 문자열 속성을 설정하기 위해 사용됩니다. 예를 들어 다음과 같이 SqlDataSource 컨트롤에 연결 문자열 특성을 설정할 수 있습니다.

<asp:SqlDataSource ID="SqlDataSource1" Runat="server" 
    SelectCommand="SELECT * FROM [Employees]"
    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString1 %>">
</asp:SqlDataSource>

강조된 코드가 식을 나타냅니다. 식은 따옴표 안에 표시되며 특성 값을 나타냅니다. 이 식은 "NorthwindConnectionString1"이라는 연결 문자열을 참조하는데, 이 문자열은 Web.config 파일의 connectionStrings 요소에 정의됩니다. connectionStrings 요소의 형태는 다음과 같습니다.

<configuration>
  <connectionStrings>
    <add name="NorthwindConnectionString1" 
      connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
    <!-- additional settings -->
</configuration>
d5bd1tad.alert_note(ko-kr,VS.100).gif참고:

보안을 강화하기 위해 연결 문자열이 포함된 구성 파일의 섹션을 암호화하는 것이 좋습니다. 자세한 내용은 보호되는 구성을 사용하여 구성 정보 암호화를 참조하십시오. 앞의 예에서는 구성 파일의 configuration 섹션을 쉽게 구별할 수 있도록 암호화하지 않았습니다.

각 연결 문자열에는 이름이 지정되며, ASP.NET 페이지 내에서 해당 문자열을 참조하는 식에서 이 이름을 사용할 수 있습니다.

식은 연결 문자열에 사용할 수 있을 뿐 아니라 웹 사이트를 통해 액세스할 수 있는 구성 파일에 정의된 응용 프로그램 설정을 참조하는 데에도 사용할 수 있습니다. 예를 들어 사이트 저작권 메시지처럼 자주 사용되는 문자열을 Web.config 파일의 appSettings 섹션에 저장하는 경우 다음과 같은 식을 사용할 수 있습니다.

<appSettings>
  <add key="copyright" value="(c)Copyright 2004 Northwind Traders"/>
</appSettings>

ASP.NET 페이지 내에서 다음과 유사한 식을 사용하여 해당 값을 참조할 수도 있습니다.

<%$ AppSettings: copyright %>

이렇게 하면 모든 페이지에서 동일한 텍스트를 변경하지 않고도 구성 파일 내에서 자주 사용되는 요소를 유지 관리할 수 있습니다.

식을 페이지 또는 컨트롤에 대한 정적 값으로 사용하려면 식을 ASP.NET 서버 컨트롤에 포함시킵니다. 일반적으로 Literal 컨트롤을 추가한 후 해당 Text 속성을 식으로 설정합니다. 예를 들어 다음 코드를 사용하여 모든 페이지의 하단에 저작권 메시지를 둘 수 있습니다.

<p align="center">

<asp:Literal runat="server" text="<%$ AppSettings: copyright %>"/>

</p>

구성 파일에 포함된 값뿐 아니라 리소스 파일(.resx 또는 .resource)에 저장된 값도 표시할 수 있습니다. 일반적으로 리소스 파일은 특정 언어 또는 언어와 문화권 조합에 대한 정보를 저장하는 데 사용됩니다. 리소스 파일과 식을 사용하면 런타임에 확인된 값, 예를 들면 브라우저에서 보고된 언어 및 문화권 설정 또는 사용자가 명시적으로 선택한 언어에 따라 다른 언어로 텍스트를 표시하는 웹 페이지를 만들 수 있습니다.

예를 들어, 콘텐츠를 자동으로 지역화할 때 다음 예제와 같은 식 구문을 사용하여 서버 컨트롤의 Text 속성을 설정할 수 있습니다.

<asp:Label id="label1" runat="server" text="<%$ Resources: Messages, ThankYouLabel %>" />

App_GlobalResources 폴더에는 Messages.resx, Messages.es.resx, Message.de.resx 등과 같이 지원할 각 언어에 대한 메시지 리소스 파일이 있을 수 있습니다. Messages.resx 파일은 명시적으로 설정된 문화권이 없는 경우 사용되는 중립(대체) 리소스를 나타냅니다. Messages.resx 파일에는 다음과 같은 항목이 있을 수 있습니다.

<data name="ThankYouLabel"><value>Thank you very much!</value></data>

다른 리소스 파일에도 비슷한 항목이 있을 수 있습니다. 즉, 리소스 파일에 표시된 언어에 맞게 번역된 문자열이 있을 수 있습니다. 리소스 및 지역화를 위한 식 사용에 대한 자세한 내용은 ASP.NET 웹 페이지 리소스 개요를 참조하십시오.

표시: