ASP.NET Dynamic Data 스캐폴딩

ASP.NET Dynamic Data를 사용하면 데이터 보기 및 편집을 위해 제공되는 미리 정의된 요소를 사용하여 확장 가능한 데이터 기반 웹 응용 프로그램을 만들 수 있습니다. 이러한 요소는 데이터 모델과 함께 ASP.NET 웹 응용 프로그램을 빌드하고 사용자 지정하기 위한 유연한 환경을 제공합니다.

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

스캐폴딩이란 데이터베이스의 각 테이블에 대한 웹 페이지를 자동으로 생성하는 Dynamic Data 요소를 말합니다. 이렇게 자동 생성된 웹 페이지를 통해 각 테이블에 대해 만들기, 읽기, 업데이트 및 삭제(CRUD) 작업을 수행할 수 있습니다. 스캐폴딩은 페이지 템플릿, 엔터티 페이지 템플릿, 필드 페이지 템플릿 및 필터 템플릿으로 구성됩니다. 이러한 템플릿을 사용하여 효율적인 데이터 기반 웹 사이트를 신속하게 작성할 수 있습니다.

스캐폴딩의 핵심은 데이터베이스 엔터티를 CLR(공용 언어 런타임) 형식으로 나타내는 데이터 모델입니다. Dynamic Data는 데이터 모델의 메타데이터를 사용하여 웹 응용 프로그램의 UI를 만들고 사용자가 입력한 변경 내용을 관리합니다.

스캐폴딩의 이점은 다음과 같습니다.

  • 데이터 기반 웹 응용 프로그램을 만들 때 코드가 거의 필요 없습니다.

  • 실용적인 페이지가 자동으로 생성되고 데이터베이스 CRUD 기능, 정렬 및 페이징이 포함됩니다.

  • ASP.NET 라우팅(URL 라우팅)에서 요청을 자동으로 처리합니다. Dynamic Data에서 요청 URL로부터 사용할 템플릿과 테이블을 유추합니다.

  • 데이터베이스 스키마를 기반으로 하는 데이터 유효성 검사가 기본으로 제공됩니다.

  • 외래 키, 부울 필드 및 열거형 필드 형식에 대해 데이터 필터가 자동으로 만들어집니다.

  • 사용자 지정을 수행하여 손쉽게 데이터 필드의 모양과 동작을 변경할 수 있습니다.

Visual Studio 2010에서 Dynamic Data 웹 사이트 템플릿을 사용하여 ASP.NET Dynamic Data 웹 사이트를 만들 수 있습니다. 자세한 내용은 연습: 스캐폴딩을 사용하여 새 Dynamic Data 웹 사이트 만들기를 참조하십시오. 스캐폴딩을 사용하는 웹 사이트의 프로젝트 구조에 대한 자세한 내용은 ASP.NET Dynamic Data 인프라를 참조하십시오.

스캐폴딩 사용

스캐폴딩 메커니즘은 기본적으로 해제되어 있습니다. 스캐폴딩은 권한 없는 액세스에 대해 전체 데이터베이스를 노출하며 이에 따라 보안 위험이 발생할 수 있으므로 신중하게 사용해야 합니다.

다음 방법 중 하나를 사용하여 스캐폴딩을 사용하도록 설정할 수 있습니다.

  • 데이터 컨텍스트가 등록될 때 모든 테이블에 대해 스캐폴딩을 사용하도록 설정합니다. Dynamic Data 기능을 사용하려면 데이터 모델의 데이터 컨텍스트를 등록해야 합니다. 이 작업은 Global.asax 파일에서 수행합니다.

  • 개별 테이블에 대해 스캐폴딩을 사용하도록 설정하거나 사용하지 않도록 설정합니다. 이를 수행하려면 ScaffoldTableAttribute 특성을 사용합니다. 이 방법을 사용하면 전체 데이터베이스를 노출하는 대신 응용 프로그램에서 필요로 하는 테이블만 노출할 수 있습니다. .

  • 개별 데이터 필드에 대해 스캐폴딩을 사용하도록 설정합니다. 이를 수행하려면 ScaffoldColumnAttribute 특성을 사용합니다.

기본적으로 Dynamic Data는 데이터 필드 표시 여부를 결정하기 위해 다음 규칙을 적용합니다.

  • ScaffoldColumnAttribute 특성이 데이터 필드에 적용되면 해당 데이터 필드가 표시됩니다. 이 규칙은 다음의 모든 규칙보다 우선합니다.

  • UIHintAttribute 특성이 데이터 필드에 적용되면 해당 데이터 필드가 표시됩니다. 이 규칙은 다음의 모든 규칙보다 우선합니다.

  • Dynamic Data는 외래 키 필드 값을 표시하지 않으므로 데이터 필드가 외래 키 필드일 경우에는 해당 데이터 필드가 표시되지 않습니다.

  • 데이터 필드가 데이터베이스에서 자동으로 생성될 경우 해당 데이터 필드가 표시되지 않습니다. 일반적으로 이러한 필드에는 관련 정보가 포함되지 않습니다. 데이터 필드를 표시해야 하는 경우에는 UIHintAttribute 특성을 데이터 모델의 데이터 필드에 적용합니다.

  • IsCustomProperty 속성 값이 true이면 해당 데이터 필드가 표시되지 않습니다.

Dynamic Data는 페이지 템플릿을 사용하여 테이블을 표시하고 CRUD 기능을 제공합니다. 템플릿은 ASP.NET(.aspx) 페이지입니다. Dynamic Data 웹 프로젝트를 만들면 Visual Studio에서 프로젝트에 DynamicData\PageTemplates 폴더를 추가합니다. 이 폴더에는 기본 페이지 템플릿이 들어 있습니다. 기본 페이지 템플릿을 수정하거나 새 템플릿을 만들어 테이블이 렌더링되는 방식을 지정할 수 있습니다.

기본 페이지 템플릿

기본 페이지 템플릿은 다음과 같은 특징을 갖습니다.

  • 웹 응용 프로그램의 루트 폴더에 있는 Site.master라는 마스터 페이지를 사용합니다. 마스터 페이지는 스타일시트와 기본 헤더를 정의합니다. 또한 AJAX 기능을 지원하는 ScriptManager 컨트롤이 포함되어 있습니다. 디버깅을 위해 ScriptManager 컨트롤의 EnablePartialRendering 속성을 false로 설정하여 부분 페이지 업데이트를 해제할 수도 있습니다.

  • 각 페이지 템플릿에는 포스트백 없이 부분 렌더링을 사용하는 데 필요한 UpdatePanel 컨트롤이 포함되어 있습니다. 자세한 내용은 UpdatePanel 컨트롤 개요를 참조하십시오.

  • 각 페이지 템플릿에는 DynamicDataManager 컨트롤이 포함되어 있습니다. 이 컨트롤은 템플릿에 있는 데이터 바인딩된 컨트롤 및 데이터 소스 컨트롤의 동적 동작을 가능하게 합니다.

다음 표에서는 Dynamic Data에서 제공하는 기본 페이지 템플릿을 보여 줍니다.

페이지 템플릿

설명

Details.aspx

데이터베이스의 단일 행에 대한 자세한 뷰를 제공합니다. 선택 작업에 사용되는 기본 템플릿입니다. 데이터를 표시하기 위해 DetailsView 컨트롤을 사용합니다.

Edit.aspx

사용자가 데이터베이스 테이블의 단일 행을 편집할 수 있도록 하는 페이지를 제공합니다. 편집 작업에 사용되는 기본 템플릿입니다. DetailsView 컨트롤을 사용합니다.

Insert.aspx

사용자가 데이터베이스 테이블에 단일 행을 삽입할 수 있도록 하는 페이지를 제공합니다. 삽입 작업에 사용되는 기본 템플릿입니다. DetailsView 컨트롤을 사용합니다.

List.aspx

데이터베이스 테이블의 행 목록을 표시합니다. 테이블을 표시하는 데 사용되는 기본 템플릿입니다. 이 템플릿은 사용자가 데이터를 필터링하고 정렬 및 페이징을 수행할 수 있도록 하는 DropDownList 컨트롤을 제공합니다. GridView 컨트롤을 사용합니다.

ListDetails.aspx

데이터베이스 테이블의 행 목록을 표시합니다. 이 템플릿을 통해 사용자는 데이터를 필터링하고 정렬 및 페이징을 수행할 수 있습니다. 이 템플릿은 행 목록에 대해 GridView 컨트롤을 사용하고, 사용자가 새 레코드를 삽입할 수 있도록 하기 위해 선택된 행에 대해 DetailsView 컨트롤을 사용합니다.

이 템플릿은 모든 기능을 통합하여 제공합니다. Dynamic Data는 기본적으로 이 템플릿을 사용하지 않습니다. 여러 작업에 대해 개별 템플릿(예: List.aspx 및 Edit.aspx)을 사용하는 대신 이 템플릿을 사용하려면 Global.asax 파일에서 구성을 변경합니다.

필드 템플릿은 ASP.NET 사용자 컨트롤입니다. 이 템플릿은 데이터 모델의 데이터 형식을 ASP.NET의 데이터 바인딩된 컨트롤의 필드에 매핑합니다. Dynamic Data는 필드 템플릿을 사용하여 데이터베이스 스키마 및 데이터 형식에 따라 데이터 엔터티에 대한 UI를 자동으로 만듭니다.

기본 필드 템플릿

ASP.NET Dynamic Data는 런타임에 데이터 필드의 데이터 형식을 유추합니다. 그런 다음 적절한 필드 템플릿을 사용하여 ASP.NET의 데이터 바인딩된 컨트롤의 데이터를 렌더링합니다. 사용되는 필드 템플릿은 해당 데이터 형식 및 데이터 컨트롤의 모드(표시, 편집 또는 삽입)에 따라 다릅니다.

Dynamic Data 웹 프로젝트를 만들면 Visual Studio에서 프로젝트에 DynamicData\FieldTemplates 폴더를 추가합니다. 이 폴더에는 기본 필드 템플릿이 들어 있습니다. 기본 필드 템플릿을 수정하거나 새 필드 템플릿을 만들어 개별 데이터 필드가 렌더링되는 방식을 지정할 수 있습니다.

다음 표에서는 ASP.NET Dynamic Data 프로젝트의 기본 필드 템플릿에 대해 소개합니다.

기본 필드 템플릿

설명

Boolean.ascx

부울 데이터를 CheckBox 컨트롤로 표시합니다. CheckBox 컨트롤은 비활성화되어 변경할 수 없습니다.

Boolean_Edit.ascx

CheckBox 컨트롤을 사용하여 사용자가 부울 값을 편집할 수 있도록 합니다.

Children.ascx

일대다 관계가 있고 사용자를 자식 페이지로 리디렉션하는 필드를 표시합니다. HyperLink 컨트롤을 렌더링합니다.

Children_Insert.ascx

부모 항목을 만드는 동안에는 자식 항목이 표시되는 페이지로 탐색하지 못하도록 합니다. 예를 들어 새 범주(부모 항목)를 만들 경우 해당 시점에서는 관련 자식 항목이 아직 존재하지 않습니다. 따라서 자식 목록이 표시되는 페이지로 지정되는 탐색 링크를 만들 수 없습니다.

DateTime.ascx

Literal 컨트롤을 사용하여 DateTime 데이터 형식을 텍스트로 표시합니다.

DateTime_Edit.ascx

TextBox 컨트롤을 사용하여 사용자가 DateTime 데이터를 편집할 수 있도록 합니다. 데이터베이스의 필드가 null이 될 수 없거나 Required 특성이 데이터 모델에 추가된 경우 이 컨트롤은 RequiredFieldValidator 컨트롤도 렌더링합니다. DateTime_Edit.ascx필드 템플릿은 데이터 모델에서 throw되는 모든 예외를 처리하는 컨트롤을 제공합니다. 이 필드 템플릿은 Regex 클래스를 지원합니다.

Decimal_Edit.ascx

TextBox 컨트롤을 사용하여 사용자가 Decimal(숫자) 데이터를 편집할 수 있도록 합니다. 입력을 Decimal 데이터 형식으로 변환할 수 있는지 확인하는 CompareValidator 컨트롤도 렌더링합니다. 데이터베이스의 필드가 null이 될 수 없거나 Required 특성이 데이터 모델에 추가된 경우 이 컨트롤은 RequiredFieldValidator 컨트롤도 렌더링합니다. 필드에 Range 특성이 있는 경우 필드는 RangeValidator 컨트롤도 렌더링합니다. Decimal_Edit.ascx 필드 템플릿은 데이터 모델에서 throw되는 모든 예외를 처리하는 컨트롤을 제공합니다. 이 필드 템플릿은 Regex 클래스를 사용합니다.

Enumeration.ascx

Literal 컨트롤을 사용하여 열거형 값을 표시합니다. 열거형 열 형식은 데이터베이스에 정의된 기본 데이터 필드 형식 또는 데이터 모델의 EnumDataTypeAttribute를 적용하여 정의되는 형식입니다.

Enumeration_Edit.ascx

DropDownList 컨트롤을 사용하여 사용자가 열거형 값 목록에서 선택할 수 있도록 합니다.

ForeignKey.ascx

다대일 관계가 있는 필드를 표시합니다. 사용자를 관계 페이지로 리디렉션하는 HyperLink 컨트롤을 렌더링합니다.

ForeignKey_Edit.ascx

DropDownList 컨트롤을 사용하여 사용자가 다대일 관계가 있는 데이터 필드를 수정할 수 있도록 합니다.

Integer_Edit.ascx

TextBox 컨트롤을 사용하여 사용자가 Integer 데이터를 편집할 수 있도록 합니다. 이 템플릿은 텍스트 상자의 입력을 Integer로 변환할 수 있는지 확인하는 CompareValidator도 렌더링합니다. 데이터베이스의 필드가 null이 될 수 없거나 Required 특성이 데이터 모델에 추가된 경우 이 컨트롤은 RequiredFieldValidator 컨트롤도 렌더링합니다. 모델의 필드에 Range 특성이 있는 경우 필드는 RangeValidator 컨트롤도 렌더링합니다. Integer_Edit.ascx는 데이터 모델에서 throw되는 모든 예외를 처리하는 컨트롤을 제공합니다. 이 필드 템플릿은 Regex 클래스를 사용합니다.

Multiline_Edit.ascx

사용자가 특정 문자열 형식의 데이터 필드를 편집할 수 있도록 합니다. 예를 들어 데이터 모델이 SQL Server 데이터베이스에 매핑될 경우 Multiline_Edit.ascx는 text, ntext, varchar(max), nvarchar(max) 데이터 형식을 매핑합니다. 이 템플릿은 TextMode 속성이 MultiLine으로 설정된 TextBox 컨트롤을 렌더링합니다. 데이터베이스의 필드가 null이 될 수 없거나 Required 특성이 데이터 모델에 추가된 경우 Multiline_Edit.ascx는 RequiredFieldValidator 컨트롤도 렌더링합니다. 데이터 모델에 RegularExpression 특성이 추가된 경우 데이터 필드는 RegularExpressionValidator 컨트롤도 렌더링합니다. Multiline_Edit.ascx는 데이터 모델에서 throw되는 모든 예외를 처리하는DynamicValidator컨트롤을 제공합니다.

ManyToMany.ascx

응용 프로그램의 데이터 모델에서 ADO Entity Framework를 사용할 경우 다대다 데이터 필드를 표시하고 편집하는 데 사용됩니다. 데이터 모델이 LINQ to SQL을 기반으로 할 경우 LINQ to SQL은 다대다 관계를 지원하지 않으므로 이 필드 템플릿이 사용되지 않습니다.

ManyToMany_Edit.ascx

다른 테이블과 다대다 관계를 가진 데이터베이스를 사용자가 편집할 수 있도록 합니다. 이 템플릿에는 PJT(Pure Join Table)가 필요합니다.

Text.ascx

Literal 컨트롤을 사용하여 문자열 데이터 및 숫자 데이터 형식을 표시합니다.

Text_Edit.ascx

TextMode 속성이 SingleLine으로 설정된 TextBox 컨트롤을 사용하여 여러 줄 텍스트로 간주되지 않는 문자열 데이터를 사용자가 편집할 수 있도록 합니다. 데이터베이스의 필드가 null이 될 수 없거나 Required 특성이 데이터 모델에 추가된 경우 Text_Edit.ascx는 RequiredFieldValidator 컨트롤도 렌더링합니다. 데이터베이스의 필드에 최대 길이가 설정되어 있으면 TextBox 컨트롤의 MaxLength 속성이 적용됩니다. 데이터 모델에 RegularExpression 특성이 있으면 기본 필드 템플릿은 RegularExpressionValidator 컨트롤도 렌더링합니다. Text_Edit.ascx는데이터 모델에서 throw되는 모든 예외를 처리하는 컨트롤을 제공합니다.

Url.ascx

HyperLink 컨트롤을 사용하여 URL을 표시합니다. 해당 필드를 URL로 지정하는 DataTypeAttribute 특성을 사용하여 데이터 모델의 필드를 표시하므로 데이터 필드 형식이 하이퍼링크로 표시됩니다.

필드 템플릿에 데이터 형식 매핑

데이터 필드를 렌더링하는 데 사용되는 필드 템플릿을 다음과 같은 방법으로 변경할 수 있습니다.

태그 방법과 데이터 모델 방법을 모두 사용할 경우 매핑이 동일하지 않으면 태그 방법이 우선합니다.

필드 템플릿 렌더링

Dynamic Data는 기본 필드 템플릿 및 사용자 지정 필드 템플릿을 디스플레이, 편집 및 삽입 모드로 렌더링합니다. Dynamic Data는 조회 규칙을 사용하여 렌더링할 필드 템플릿을 확인합니다. 사용되는 필드 템플릿은 해당 컨트롤의 모드(표시, 편집 또는 삽입)에 따라 다릅니다. 예를 들어 열 데이터가 부울 값이고 데이터 컨트롤이 디스플레이 모드에 있으면 Dynamic Data는 Boolean 데이터 형식을 표시하는 기본 필드 템플릿인 Boolean.ascx를 렌더링합니다. 그러나 데이터 컨트롤이 편집 모드일 경우에는 Dynamic Data에서 기본적으로 Boolean 데이터 형식의 편집을 지원하는 필드 템플릿인 Boolean_Edit.ascx를 렌더링합니다.

Dynamic Data는 먼저 필드 템플릿의 모드를 확인한 후 조회를 시작합니다.

표시 모드 필드 템플릿 조회

다음은 표시 모드에서 Dynamic Data가 필드 템플릿을 렌더링하는 데 사용하는 조회 규칙에 대한 설명입니다.

  • 데이터 모델의 데이터 필드가 사용자 지정 템플릿을 지정하는 UIHintAttribute 특성으로 표시되어 있는 경우 Dynamic Data는 사용자 컨트롤 이름과, UIHintDataTypeAttribute 속성에 정의된 DataTypeAttribute를 기준으로 컨트롤을 조회합니다. Dynamic Data는 기본적으로 모든 데이터 형식을 표시하지는 않습니다. 예를 들어 binary, timestamp 및 image 형식과 같은 바이트 배열 데이터 형식은 렌더링되지 않습니다. 사용자 지정 데이터 형식을 표시하는 방법에 대한 자세한 내용은 DataTypeAttribute 클래스 개요를 참조하십시오.

  • 필드가 UIHintAttribute 특성으로 표시되지 않았을 경우 Dynamic Data는 데이터베이스 열의 데이터 형식을 확인한 후 해당 데이터 형식을 기준으로 필드 템플릿을 조회합니다. 데이터 형식 이름을 확인하는 순서는 다음과 같습니다.

    1. Dynamic Data에서 정규화된 데이터 형식 이름(예: System.Int32)과 일치하는 필드 템플릿을 찾습니다.

    2. 정규화된 형식 이름과 일치하는 필드 템플릿이 없을 경우 Dynamic Data는 단순한 데이터 형식 이름(예: Int32)을 가진 필드 템플릿을 찾습니다.

    3. 단순한 데이터 형식 이름과 일치하는 필드 템플릿이 없을 경우 Dynamic Data는 다음 단계에서와 같이 데이터 테이블에 정의된 특수한 경우를 찾습니다. 예를 들어 Int32와 같은 단순 데이터 형식을 찾지 못하면 Dynamic Data는 데이터 테이블에 정의된 특별한 사례인 Integer를 찾습니다. 단순한 데이터 형식 String이 없을 경우 String의 특수한 경우인 Text를 찾습니다.

    4. 특수한 경우가 없고 대체(fallback) 데이터 형식이 있을 경우 Dynamic Data는 대체 데이터 형식을 찾습니다. 다음 표에는 대체 데이터 형식이 나와 있습니다.

      데이터 형식

      대체 데이터 형식

      Float , Double

      Decimal

      Int16 , Byte, Long

      Integer

      Char , Integer, Decimal, GUID, DateTime, DateTimeOffset, TimeSpan

      String

    5. 대체 데이터 형식이 없을 경우 Dynamic Data는 오류 메시지를 표시하고 데이터를 표시하지 않습니다.

  • 필드가 외래 키일 경우 Dynamic Data는 다대일 관계에 대해 ForeignKey.ascx 템플릿을 사용하고 일대다 관계에 대해 Children.ascx 템플릿을 사용합니다.

편집 모드 필드 템플릿 조회

편집 모드 조회 규칙은 한 가지 예외 사항을 제외하고는 표시 모드 조회 규칙과 같습니다. 필드 템플릿이 편집 모드일 경우 Dynamic Data는 표시 모드에 사용하는 모든 조회 규칙을 사용하되, 이름에 "_Edit"가 추가된 필드 템플릿(예: Text_Edit)을 찾습니다. 이름에 "_Edit"를 포함하는 필드 템플릿이 없을 경우 Dynamic Data는 "_Edit"가 없는 필드 템플릿을 찾습니다. 즉, 표시(읽기 전용) 모드로 기본 설정됩니다.

삽입 모드 조회

삽입 모드 조회 규칙은 한 가지 예외 사항을 제외하고는 표시 모드 조회 규칙과 같습니다. 필드 템플릿이 삽입 모드일 경우 Dynamic Data는 표시 모드에 사용하는 모든 조회 규칙을 사용하되, 이름에 "_Insert"가 추가된 필드 템플릿(예: Text_Insert)을 찾습니다. 이름에 "_Insert"를 포함하는 필드 템플릿이 없을 경우 Dynamic Data는 편집 모드 템플릿을 찾습니다.

참고참고

"_Insert.ascx" 사용자 정의 컨트롤은 기본적으로 제공되지 않습니다. 즉, Dynamic Data는 삽입 모드에 대해 편집 모드 필드 템플릿을 기본적으로 사용합니다.

필드 템플릿을 사용하는 데이터 바인딩된 컨트롤

FormView 컨트롤, ListView 컨트롤 및 템플릿을 지원하는 기타 컨트롤(예: GridViewDetailsView 컨트롤)은 DynamicControl 컨트롤을 사용하여 데이터 모델의 데이터를 표시하고 편집합니다.

또한 DynamicControl 컨트롤을 사용하면 데이터 열에 템플릿을 사용할 수 있습니다.

자세한 내용은 방법: ListView 및 FormView 컨트롤에 동적 동작 추가를 참조하십시오.

엔터티 템플릿은 테이블의 전체 데이터 행에 대한 레이아웃을 사용자 지정할 수 있는 사용자 정의 컨트롤입니다. 엔터티 템플릿을 사용하면 페이지 템플릿보다 테이블 레이아웃을 더 세부적으로 제어할 수 있습니다. Dynamic Data 웹 프로젝트를 만들면 Visual Studio에서 프로젝트에 DynamicData\EntityTemplates 폴더를 추가합니다. 이 폴더에는 필드 이름에 대한 레이블과 필드 값에 적합한 컨트롤을 사용하여 두 열에 데이터를 표시하는 기본 엔터티 템플릿이 들어 있습니다.

그러한 템플릿에는 표시, 편집 및 삽입 작업을 위한 템플릿이 있습니다. 엔터티 템플릿은 Details.aspx, Insert.aspx 및 Update.aspx 페이지 템플릿과 사용자 지정 페이지에 포함되므로 사용자 지정 페이지 템플릿에서 사용할 수 있습니다. 엔터티 템플릿은 필드 템플릿을 사용하여 실제 데이터를 렌더링합니다. 엔터티 템플릿은 DynamicEntity 컨트롤을 사용하여 페이지에 표시됩니다. Dynamic Data는 런타임에 이 컨트롤을 해당 엔터티 템플릿의 내용으로 바꿉니다.

필터 템플릿은 데이터 필터링에 대한 UI를 렌더링하는 사용자 컨트롤입니다. 데이터 필터링을 사용하면 사용자가 선택한 열의 값을 기준으로 표시할 테이블 행을 선택할 수 있습니다. 예를 들어 필터 템플릿을 사용하면 사용자가 외래 키를 선택한 후 해당 키와 일치하는 행을 표시할 수 있습니다.

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

Dynamic Data를 사용하면 페이지 태그를 사용하여 데이터 필터링을 위한 UI를 만들 수 있습니다. 이 방법은 Dynamic Data에서 기본 필터 템플릿을 제공하는 열 형식에 대해 테이블 행을 필터링하고자 할 때 유용합니다. 해당 열 형식에 대한 필터 템플릿이 없을 경우 사용자 지정 필터 템플릿을 만든 후 UI를 만들 때 Dynamic Data에서 이 템플릿을 사용하도록 구성할 수 있습니다. Dynamic Data에서 기본 필터 템플릿이 있는 열 형식에 대한 UI를 자동으로 생성하도록 페이지 태그를 만들 수도 있습니다. 기본적으로 Dynamic Data는 부울, 외래 키 및 열거형 열 형식에 대해서만 UI를 생성합니다.

Dynamic Data는 다음과 같이 데이터 필터링을 수행합니다.

  1. 필터 템플릿이 페이지의 데이터 소스 컨트롤에 대한 기본 쿼리를 수정합니다. 이 작업은 사용자가 선택한 열 값을 포함시키기 위한 것입니다.

  2. 데이터 소스 컨트롤은 수정된 쿼리를 실행한 후 필터링된 데이터를 연결된 데이터 바인딩된 컨트롤에 반환하여 표시하도록 합니다.

기본 필터 템플릿을 수정하거나 새 필드 템플릿을 만들어 데이터 필터링의 처리 방식을 지정할 수 있습니다.

다음 표에서는 ASP.NET Dynamic Data 프로젝트의 기본 필터 템플릿에 대해 소개합니다.

기본 필터 템플릿

설명

Boolean.ascx

DropDownList 컨트롤을 사용하여 부울 데이터를 표시합니다. 표시되는 값은 All, True, False입니다. 열 값이 null이 될 수 있는 경우 이 필터는 [Not set] 값도 제공합니다.

Enumeration.ascx

DropDownList 컨트롤을 사용하여 열거형 값을 표시합니다. 표시되는 값은 All 및 열거형 값의 문자열 표현입니다. 열 값이 null이 될 수 있는 경우 이 필터는 [Not set] 값도 제공합니다.

ForeignKey.ascx

DropDownList 컨트롤을 사용하여 외래 키를 표시합니다. 표시되는 값은 All 및 관련 테이블의 값입니다. 열 값이 null이 될 수 있는 경우 이 필터는 [Not set] 값도 제공합니다.

맨 위로 이동

표시: