다음을 통해 공유


ASP.NET Dynamic Data 개요

업데이트: 2008년 7월

ASP.NET Dynamic Data는 데이터 기반 ASP.NET 웹 응용 프로그램을 쉽게 만들 수 있게 하는 프레임워크입니다. 이 프레임워크에서는 자동으로 런타임에 데이터 모델 메타데이터를 검색하고 해당 메타데이터에서 UI 동작을 파생시켜 이러한 기능을 제공합니다. 스캐폴딩 프레임워크는 데이터를 보고 편집할 수 있는 기능적인 웹 사이트를 제공합니다. 요소를 변경하거나 새 요소를 만들어 기본 동작을 재정의하여 이러한 스캐폴딩 프레임워크를 쉽게 사용자 지정할 수 있습니다. 기존 응용 프로그램에서는 스캐폴딩 요소를 ASP.NET 페이지와 쉽게 통합할 수 있습니다.

이 항목에는 다음과 같은 단원이 포함되어 있습니다.

  • 소개

  • 기능

  • 배경

  • 클래스 참조

  • 추가 정보

기능

ASP.NET Dynamic Data를 사용하면 최소한의 코드로 Dynamic Data 프레임워크의 모든 기능을 활용하는 새 데이터 기반 웹 사이트를 만들 수 있습니다. 또한 특정 Dynamic Data 기능을 선택하여 기존 웹 사이트에 추가할 수도 있습니다.

Dynamic Data에서는 다음과 같은 기능을 제공합니다.

배경

Dynamic Data에는 동적 특성이 있으므로 런타임에 내부 데이터베이스 스키마에서 데이터 필드의 모양과 동작을 유추할 수 있습니다. 이 메커니즘 외에도 기본 페이지 및 필드 템플릿을 사용할 수 있으며 많은 부분을 사용자 지정할 수 있으므로 사용자는 다음과 같은 다양한 디자인을 선택할 수 있습니다.

  • 스캐폴딩을 사용한 웹 사이트 빌드

  • 기존 웹 사이트에 Dynamic Data 추가

  • 데이터 필드 유효성 검사 비즈니스 논리 추가

  • 특정 데이터 필드나 특정 테이블을 표시하고 편집하기 위해 렌더링되는 UI 사용자 지정

데이터 모델

데이터 모델은 데이터베이스에 있는 정보를 나타내고 데이터베이스의 항목이 서로 어떤 관계를 가지는지 나타냅니다.

Dynamic Data는 LINQ-to-SQL 데이터 모델과 ADO.NET Entity Framework 데이터 모델을 지원합니다. 웹 응용 프로그램에 데이터 모델의 여러 인스턴스를 포함할 수 있지만 Dynamic Data에 사용되는 모델은 모두 동일한 형식이어야 합니다.

Dynamic Data와 함께 사용할 데이터 모델은 웹 응용 프로그램의 Global.asax 파일에 등록합니다. Dynamic Data에 데이터 모델을 등록하면 데이터 모델을 통해 데이터 필드의 자동 유효성 검사를 수행할 수 있으며 데이터 계층 수준에서 데이터의 모양과 동작을 제어할 수 있습니다.

스캐폴딩

스캐폴딩은 데이터 모델에 기반하여 페이지를 동적으로 표시함으로써 기존 ASP.NET 페이지 프레임워크를 향상하는 메커니즘입니다. 스캐폴딩은 다음과 같은 기능을 제공합니다.

  • 최소한의 코드만 작성하거나 코드를 전혀 작성하지 않고 데이터 기반 웹 응용 프로그램 만들기

  • 빠른 개발 시간

  • 데이터베이스 스키마에 기반한 기본 제공 데이터 유효성 검사

  • 각 외래 키나 Boolean 필드에 대해 생성되는 자동 데이터 선택 항목

페이지 템플릿

Dynamic Data 스캐폴딩에서는 페이지 템플릿을 사용하여 데이터 테이블의 기본 뷰를 제공합니다. 페이지 템플릿은 Dynamic Data에서 사용할 수 있는 모든 테이블의 데이터를 표시하도록 구성된 ASP.NET 웹 페이지입니다. Dynamic Data는 테이블 나열(목록 뷰), 마스터/세부 테이블 표시(세부 사항 뷰), 데이터 편집(편집 뷰) 등과 같은 다양한 데이터 뷰에 대한 페이지 템플릿을 포함합니다. 기본적으로 Dynamic Data는 목록 뷰 페이지 템플릿만 사용하도록 구성되어 있습니다. 이러한 기본 페이지 템플릿은 변경할 수 있으며 용도에 따라 적합한 페이지 템플릿을 사용하도록 Dynamic Data를 변경할 수 있습니다. 자세한 내용은 ASP.NET Dynamic Data 인프라를 참조하십시오.

필드 템플릿

Dynamic Data는 필드 템플릿을 사용하여 개별 데이터 필드의 표시 및 편집을 위한 UI를 렌더링합니다. 사용되는 필드 템플릿은 데이터 필드 형식에 따라 적절하게 결정됩니다. Dynamic Data는 데이터 필드의 표시 및 편집을 위한 별도의 필드 템플릿을 포함합니다.

예를 들어 DateTime 데이터 필드의 경우 Dynamic Data에서는 다음 필드 템플릿을 사용합니다.

  • DateTime.ascx. 이 템플릿은 DateTime 데이터 형식을 텍스트(문자열)로 표시하고 Literal 컨트롤로 렌더링합니다.

  • DateTime_Edit.ascx. 이 템플릿은 TextBox 컨트롤을 렌더링합니다. 데이터베이스의 필드가 null일 수 없거나 데이터 모델이 입력을 요구하도록 사용자 지정된 경우 이 컨트롤은 RequiredFieldValidator 컨트롤로 렌더링됩니다. DateTime_Edit.ascx필드 템플릿은 데이터 모델에서 throw되는 모든 예외를 처리하는 DynamicValidator 컨트롤을 제공합니다. 또한 Regex 클래스도 지원합니다.

Dynamic Data 웹 프로젝트를 만들면 Visual Studio에서 프로젝트에 DynamicData\FieldTemplates 폴더를 추가합니다. 이 폴더에는 기본 필드 템플릿이 들어 있습니다.

기본 제공 필드 템플릿을 사용자 지정하거나 새 필드 템플릿을 만들어 개별 데이터 필드가 렌더링되는 방식을 지정할 수 있습니다. 예를 들어, 전화 번호나 전자 메일 주소를 표시하고 편집하기 위한 UI를 렌더링하는 필드 템플릿을 만들 수 있습니다. 사용자가 다른 방식(슬라이더 등)을 사용하여 숫자 데이터를 지정할 수 있도록 UI를 렌더링하는 필드 템플릿을 만들 수도 있습니다.

기존 데이터 컨트롤 향상

Dynamic Data는 다음과 같은 방식으로 동적 동작을 포함하여 기존 데이터 컨트롤을 향상합니다.

  • 모든 페이지에서 데이터 컨트롤에 대한 동일한 태그와 코드를 다시 만들지 않고도 미리 정의된 Dynamic Data 템플릿을 사용하면 DetailsViewGridView 컨트롤에서 동적으로 데이터를 표시할 수 있습니다. 이러한 템플릿을 사용자 지정하여 사용할 컨트롤과 데이터 필드 표시 및 편집을 위한 UI 렌더링 방식을 변경할 수 있습니다. 이를 통해 한 곳에서만 변경해도 이러한 변경 내용을 웹 응용 프로그램 전체의 데이터 컨트롤 모양과 동작에 적용할 수 있습니다. 페이지 템플릿은 특정 테이블에 독립적이므로 데이터베이스의 모든 테이블에 사용할 수 있습니다. 자세한 내용은 방법: DynamicField를 사용하여 데이터 바인딩된 컨트롤에 동적 동작 추가를 참조하십시오.

  • 템플릿에서 DynamicControl 컨트롤을 사용하고 표시할 행 필드를 지정하면 FormViewListView 컨트롤에서 DetailsViewGridView 컨트롤의 동작과 유사한 동작을 구현할 수 있습니다. 그러면 Dynamic Data에서 사용자가 지정한 템플릿을 기반으로 이러한 컨트롤에 대한 UI를 자동으로 빌드합니다. DynamicControl 컨트롤은 필드에 대한 UI를 자동으로 렌더링하지 않으므로 컨트롤을 특정 데이터 필드에 바인딩해야 합니다. 자세한 내용은 방법: 데이터 바인딩된 템플릿 컨트롤에 ASP.NET Dynamic Data 사용을 참조하십시오.

  • Dynamic Data는 LINQ-to-SQL이나 Entity Framework 데이터 모델의 데이터 모델 메타데이터를 검사하여 메타데이터에 기반한 자동 유효성 검사를 제공합니다. 예를 들어, 데이터베이스의 열이 nullable이 아닌 경우 해당 열에 대해 RequiredFieldValidator 컨트롤이 자동으로 렌더링됩니다. 사용자 지정 메타데이터를 적용하면 데이터 필드를 렌더링하고 유효성을 검사하는 방법을 더 세밀하게 사용자 지정할 수 있습니다. 자세한 내용은 방법: 데이터 모델의 데이터 필드 유효성 검사 사용자 지정을 참조하십시오.

클래스 참조

다음 표에서는 ASP.NET Dynamic Data 클래스를 포함하는 네임스페이스를 보여 줍니다.

네임스페이스

설명

System.ComponentModel.DataAnnotations

Dynamic Data 컨트롤의 메타데이터를 정의하는 데 사용되는 특성 클래스를 제공합니다.

System.Web.DynamicData

ASP.NET Dynamic Data의 핵심 기능을 제공하는 클래스를 포함합니다. 또한 Dynamic Data 동작을 사용자 지정하는 확장성 기능을 제공합니다.

추가 정보

다음과 같은 제안을 따르는 것이 좋습니다.

  • URL 라우팅에 대해 배웁니다. 자세한 내용은 ASP.NET 라우팅을 참조하십시오.

  • LINQ-to-SQL 개체 관계형 매핑에 대해 배웁니다. 자세한 내용은 LINQ to SQL을 참조하십시오.

  • ADO.NET Entity Framework에 대해 배웁니다. 자세한 내용은 ADO.NET Entity Framework를 참조하십시오.

맨 위로 이동

참고 항목

작업

연습: 스캐폴딩을 사용하여 새 Dynamic Data 웹 사이트 만들기

연습: 기존 웹 사이트에 Dynamic Data 추가

개념

ASP.NET Dynamic Data 인프라

ASP.NET Dynamic Data 스캐폴딩 및 페이지 템플릿 개요

ASP.NET 데이터 바인딩된 컨트롤에 동적 동작 추가

ASP.NET Dynamic Data 필드 템플릿 개요

ASP.NET Dynamic Data 모델 개요

변경 기록

날짜

변경 내용

이유

2008년 7월

항목이 추가되었습니다.

SP1 기능 변경