ASP.NET 식 개요
업데이트: 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>
참고: |
---|
보안을 강화하기 위해 연결 문자열이 포함된 구성 파일의 섹션을 암호화하는 것이 좋습니다. 자세한 내용은 보호되는 구성을 사용하여 구성 정보 암호화를 참조하십시오. 앞의 예에서는 구성 파일의 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 text="<%$ AppSettings: copyright %>"/>
</p>
리소스 파일
구성 파일에 포함된 값뿐 아니라 리소스 파일(.resx 또는 .resource)에 저장된 값도 표시할 수 있습니다. 일반적으로 리소스 파일은 특정 언어 또는 언어와 문화권 조합에 대한 정보를 저장하는 데 사용됩니다. 리소스 파일과 식을 사용하면 런타임에 확인된 값, 예를 들면 브라우저에서 보고된 언어 및 문화권 설정 또는 사용자가 명시적으로 선택한 언어에 따라 다른 언어로 텍스트를 표시하는 웹 페이지를 만들 수 있습니다.
예를 들어, 콘텐츠를 자동으로 지역화할 때 다음 예제와 같은 식 구문을 사용하여 서버 컨트롤의 Text 속성을 설정할 수 있습니다.
<asp:Label id="label1" 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 웹 페이지 리소스 개요를 참조하십시오.