기존 ASP에 익숙하다면 기능이 동일하지 않더라도 ASP.NET의 데이터 바인딩 구문에 익숙할 것입니다. 데이터 바인딩 표현은 ASPX 파일의 <%#과 %> 사이의 코드입니다. 이를 통해 데이터를 컨트롤러에 바인딩할 수 있을 뿐만 아니라 속성, 표현식 및 페이지의 메서드 호출 결과도 컨트롤러에 바인딩할 수 있습니다. 이 기능은 사용하기 쉽지만 어떤 콘텐츠를 바인딩할 수 있는지, 사용 여부를 판단할 때 혼란을 야기하는 경우가 있습니다.
데이터 바인딩 요소
페이지의 ASP.NET에서 DataBind 메서드가 호출되면 데이터 바인딩 식이 ASP.NET의 속성, 서버 컨트롤 속성 및 데이터 소스에 연결됩니다. 서버 제어 탭을 열 때나 페이지의 어느 곳에서나 속성 값/값 쌍의 숫자 측면에 표현식을 배치할 수 있습니다. 모든 데이터 바인딩 표현식은 배치 위치에 관계없이 <%# 및 %> 문자로 묶입니다.
데이터 컨트롤러(Repeater, DataGrid 등)를 사용할 때 표현식의 매개변수는 일반적으로 데이터 소스의 열 이름입니다. 그럼에도 불구하고 값을 반환하는 한 유효한 표현식을 사용할 수 있습니다. 마찬가지로 외부 목록 컨트롤에도 동일한 구문을 사용할 수 있습니다. 여기에는 페이지에 값을 표시하거나 컨트롤러 속성을 조합하는 것이 포함됩니다.
Container.DataItem은 특정 항목에 대한 DataItem의 런타임 별칭입니다. 데이터 쿼리의 행이나 벡터의 단일 요소 등 데이터 소스의 단일 항목을 매핑합니다. DataItem의 실제 데이터 유형은 데이터 소스에 의해 결정됩니다. 따라서 정수 벡터를 처리할 때 DataItem도 정수입니다.
다음 목록에서는 몇 가지 VB.NET 구문 상황을 검토합니다.
<%# Container.DataItem %>--문자열 벡터를 반환합니다.
<%# Container.DataItem("expression") %>--DataView 컨테이너의 특정 항목을 반환합니다. 필드
< %# Container.DataItem.PropertyName %>--데이터 소스의 특정 문자열에 대한 속성 값을 반환합니다.
<%# CStr(Container.DataItem.PropertyName) %>--다음과 같은 경우
속성 값을 반환하고 이를 문자열 형식으로 변환합니다
.C#을 사용하면 구문이 약간 다릅니다. 다음 목록에는 위 목록에 해당하는 C# 코드가 포함되어 있습니다. 기본 구문은 동일하지만 반환되는 속성 값과 데이터 유형의 변환에 변경 사항이 있습니다.
<%# Container.DataItem %>
<%# ((DataRowView)Container.DataItem)["PropertyName"] %>
<%# ((ObjectType)Container.DataItem).PropertyName %>
<%# ((ObjectType)Container. DataItem).PropertyName.ToString() %>
페이지 속성 및 메서드에 대해 작업을 수행할 때 구문이 일관됩니다. 문자열 값이 반환되는 한 구문은 정확히 동일합니다. 다음 목록은 예를 제공합니다.
<%# propertyName %>--페이지 수준 속성 값을 반환합니다.
<asp:ListBox id="lstValues" datasource='<%# propertyName %>' runat="server">-- 데이터 컨트롤러 <%# (objectName.PropertyName) %>에 바인딩된 페이지 수준 속성 값(벡터, 개체 집합 등)과 동일한 값을 반환합니다
.--페이지 수준 개체 속성 값 표시
<%# MethodName() %>--표시 페이지 메소드가 값을 반환합니다.
페이지의 단일 값(속성 및 메소드 등에서 반환되는 값)을 사용하려면 다음 구문을 사용합니다.
<%= 값 %>
목록 A의 C# 코드는 데이터를 보여줍니다. ASP.NET 웹 양식의 바인딩. SQL Sever Northwind Employees 테이블에서 직원의 이름과 전화번호를 선택합니다. 쿼리 값은 ASP.NET Repeater 컨트롤러를 통해 표시됩니다. 열 값은 데이터 바인딩을 통해 삽입됩니다. 테이블의 양식 제목은 메소드 호출을 통해 조합됩니다. 또한 Dataitem의 ItemIndex 속성을 사용하여 행 수를 표시합니다. ItemIndex 속성은 0부터 시작하여 표시 간에 1씩 증가합니다.
목록 B에는 동등한 VB.NET 코드가 포함되어 있습니다. 주요 차이점은 VB.NET에서는 괄호를 사용하고 C#에서는 대괄호를 사용한다는 것입니다. 그리고 VB.NET에서는 행 캐스팅이 필요하지 않습니다.
Contain.DataItem을 사용하는 것은 데이터 유형과 데이터 유형 변환에 언제든지 주의를 기울여야 하기 때문에 약간 지루합니다. Microsoft는 개발을 더욱 단순화할 수 있는 DataBinder 클래스를 제공합니다.
DataBinder
DataBinder 클래스 사용은 Microsoft 설명서(MSDN)에 자세히 설명되어 있습니다. 이 방법을 사용하면 RAD 디자이너가 구문 분석된 데이터 바인딩 구문을 쉽게 생성할 수 있습니다. 이 메서드는 Web Forms 페이지 선언에서도 사용되어 한 형식에서 다른 형식으로의 매핑을 단순화할 수 있습니다.
ASP.NET 페이지에서 데이터 값을 사용할 때 DataBinder 클래스의 Eval 메서드를 사용하면 .NET이 무거운 작업을 수행하도록 할 수 있습니다. Eval 메서드는 이전에 재정의된 Container.DataItem 개체를 수락하고 식에 지정된 각 필드에 대한 세부 데이터를 계산하여 표시합니다. 구문은 다음과 같습니다.
DataBinder.Eval(Container.DataItem, "필드 이름", "선택적 형식 지정")
이 구문을 사용하면 DataBinder.Eval을 사용하여 첫 번째 예제를 다시 작성할 수 있습니다. C# 코드는 목록 C를 참조하세요. 목록 D에는 VB.NET에 해당하는 코드가 포함되어 있습니다.
DataBinder.Eval은 작업을 시스템에 전달하는 데 매우 강력하지만 시스템에서 요소를 찾고 개체/데이터 유형을 결정하는 데 소요되는 시간과 리소스 오버헤드가 높다는 점에도 유의하세요.
풍부한 옵션
데이터 바인딩을 통해 ASP.NET 페이지에 데이터를 비교적 간단하게 넣을 수 있습니다. 데이터를 컨트롤러에 바인딩하고 표시 방법을 결정하거나 ASP.NET 페이지에 선언된 컨트롤러에 데이터를 바인딩하도록 선택하는 등 선택할 수 있는 다양한 데이터 바인딩 옵션이 있습니다. 결국 취향에 따라 다르겠지만, 선택지가 많다는 것은 결국 좋은 일이다.
Tony Patton은 소프트웨어 개발자로 경력을 시작했으며 Java, VB, Lotus 및 XML 인증을 받았습니다.