ASP.NET Dynamic Data 인프라
업데이트: 2007년 11월
이 항목에서는 ASP.NET Dynamic Data 웹 사이트의 레이아웃에 대해 설명하고 기본적으로 만들어지는 폴더 및 파일에 대한 정보를 제공합니다.
Visual Studio 2008에서 Dynamic Data 웹 사이트 템플릿을 사용하여 ASP.NET Dynamic Data 웹 사이트를 만들 수 있습니다. 이 템플릿은 Dynamic Data에서 데이터 작업을 위한 UI를 만드는 데 사용하는 사용자 정의 컨트롤, 페이지 템플릿 및 ASP.NET 웹 파일을 생성합니다.
데이터 컨텍스트 클래스
Dynamic Data 웹 응용 프로그램에는 MetaModel 개체 및 등록된 데이터 컨텍스트가 필요합니다. 데이터 컨텍스트는 LINQ to SQL 클래스(System.Data.Linq.DataContext 클래스의 인스턴스)와 ADO.NET Entity Framework 클래스 중 하나일 수 있으며 응용 프로그램 루트의 App_Code 폴더에 있어야 합니다. 자세한 내용은 ASP.NET Dynamic Data 모델 개요를 참조하십시오.
폴더 및 파일
다음 표에서는 ASP.NET Dynamic Data 웹 사이트의 루트 수준에 만들어지는 파일과 폴더에 대해 설명합니다.
파일 또는 폴더 |
설명 |
---|---|
Dynamic Data |
데이터를 표시하는 페이지 및 사용자 지정 컨트롤에 사용되는 폴더가 포함됩니다. Dynamic Data 폴더의 하위 폴더에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 DynamicData 폴더 구조를 참조하십시오. |
Default.aspx |
MetaModel 인스턴스에 등록된 테이블 및 뷰를 표시하는 ASP.NET 페이지입니다. 각 테이블 이름은 해당 테이블의 콘텐츠를 표시하는 HyperLink 컨트롤로 렌더링됩니다. |
Global.asax |
MetaModel 클래스의 인스턴스를 등록하고 RouteCollection 개체에 대한 경로를 추가하는 메서드가 들어 있습니다. 자세한 내용은 이 항목 뒷부분에 나오는 웹 사이트 구성을 참조하십시오. |
Site.css |
Dynamic Data 페이지 템플릿과 컨트롤에 사용되는 CSS 스타일시트입니다. |
Site.master |
사이트의 마스터 페이지입니다. Default.aspx 및 Dynamic Data 페이지 템플릿에서 이 마스터 페이지를 사용합니다. |
Web.config |
사이트의 구성 파일입니다. 자세한 내용은 이 항목 뒷부분에 나오는 웹 사이트 구성을 참조하십시오. |
웹 사이트 구성
기본적으로 Dynamic Data 웹 사이트에는 ASP.NET 웹 사이트에 일반적으로 사용되는 파일이 포함되지만 이러한 파일에는 Dynamic Data에만 해당되는 정보나 코드가 포함됩니다. 이 단원에서는 Dynamic Data에 사용되는 파일에 대한 정보를 제공합니다.
Global.asax 파일
Dynamic Data 웹 사이트에서 Global.asax 파일에는 웹 응용 프로그램이 시작될 때 발생하는 Application_Start 이벤트의 처리기가 들어 있습니다. 이 처리기에서 RegisterRoutes 메서드가 호출됩니다. RegisterRoutes 메서드에는 MetaModel 인스턴스 및 RegisterContext에 대한 주석 처리된 호출이 포함되어 있습니다. Dynamic Data 작업을 사용하려면 RegisterContext 메서드를 사용하도록 설정하고, DataContext 인스턴스나 ADO.NET Entity Framework 컨텍스트와 같이 유효한 데이터 컨텍스트를 이 메서드에 전달해야 합니다.
기본적으로 Dynamic Data 웹 사이트의 Global.asax 파일에서는 Add(Type) 메서드를 호출하여 각 작업에 대해 List.aspx, Details.aspx, Edit.aspx 및 Insert.aspx 페이지의 라우팅을 추가합니다.
ListDetails.aspx 페이지 템플릿
페이지 템플릿은 Dynamic Data가 데이터를 표시 및 편집하기 위한 UI를 만드는 데 사용할 수 있는 컨트롤이 포함된 .aspx 파일입니다. Global.asax 파일에 정의된 경로에 따라 Dynamic Data가 List, Details, Edit 및 Insert 작업을 수행하는 데 사용하는 페이지 템플릿이 결정됩니다. 자세한 내용은 ASP.NET Dynamic Data 스캐폴딩 및 페이지 템플릿 개요를 참조하십시오.
Global.asax 파일에서 경로 정의를 추가하고 제거하여 페이지 템플릿에 대한 라우팅을 변경할 수 있습니다. Global.asax 파일에는 미리 정의된 대체 경로가 주석 처리된 상태로 포함되어 있습니다. 자세한 내용은 Global.asax 파일의 주석을 참조하십시오.
Dynamic Data를 사용하여 모든 테이블을 볼 수 있게 하려면 ContextConfiguration 개체의 ScaffoldAllTables 속성을 true로 설정합니다. 또는 표시할 테이블을 나타내는 partial 클래스의 ScaffoldTableAttribute 특성을 true로 설정할 수도 있습니다. ScaffoldTableAttribute 특성을 사용하면 Dynamic Data를 사용하여 테이블을 선택적으로 표시할 수 있습니다.
Site.master 파일
Site.master 파일은 Dynamic Data 웹 사이트의 마스터 페이지이며 모든 Dynamic Data 페이지 템플릿에 사용됩니다. Site.master 파일에는 EnablePartialRendering 속성이 true로 설정된 System.Web.UI.ScriptManager 컨트롤이 들어 있습니다. 자세한 내용은 ASP.NET 마스터 페이지 개요를 참조하십시오.
- 참고 EnablePartialRendering 속성이 true로 설정되어 있으면 데이터베이스 서버에서 예외를 throw할 경우 브라우저에서 런타임 오류가 발생합니다. 예를 들어 데이터베이스에 정의된 열 제약 조건이 있는 행을 업데이트하려는 경우, 업데이트 데이터가 해당 제약 조건을 위반하면 브라우저에 런타임 오류가 표시됩니다. EnablePartialRendering 속성이 false로 설정되어 있으면 브라우저에 자세한 예외 메시지가 표시되지 않고 대신 서버 처리 중 문제가 발생했음을 나타내는 HTTP 500 오류가 표시됩니다. 자세한 내용은 AJAX 및 클라이언트 기능 추가를 참조하십시오.
Web.config 파일
Visual Studio Dynamic Data 웹 사이트 템플릿은 모든 ASP.NET 웹 사이트에 사용되는 요소뿐만 아니라 Dynamic Data 관련 요소가 들어 있는 Web.config 파일을 생성합니다. assemblies 섹션에는 다음과 같은 DLL이 추가됩니다.
System.Web.Abstractions
System.Web.Routing
System.ComponentModel.DataAnnotations
System.Web.DynamicData
System.Data.Linq
System.Web.DynamicData 네임스페이스와 어셈블리에 대해서는 태그 접두사 "asp:"이 등록됩니다.
System.Web.DynamicData 어셈블리의 다음 컨트롤은 FieldTemplates 폴더의 컨트롤에 사용됩니다.
URL 라우팅 모듈 UrlRoutingModule은 httpModules 요소와 system.webServer 섹션에 추가됩니다.
DynamicData 폴더 구조
다음 표에서는 DynamicData 폴더의 하위 폴더에 대해 설명합니다.
파일 또는 폴더 |
설명 |
---|---|
Content |
기본적으로 Images 폴더와 컨트롤 두 개(GridViewPager.ascx 및 FilterUserControl.ascx)가 들어 있습니다. Images 폴더에는 페이저 컨트롤의 아이콘으로 사용되는 그래픽 파일이 들어 있습니다. FilterUserControl.ascx는 외래 키 열을 필터링하는 데 사용되는 ASP.NET 사용자 정의 컨트롤입니다. 자세한 내용은 이 문서에서 Dynamic Data 웹 서버 컨트롤을 참조하십시오. |
CustomPages |
사용자 지정 페이지 템플릿의 컨테이너 폴더입니다. 사용자 지정 페이지 템플릿은 DynamicData\PageTemplates에 정의된 페이지 템플릿을 재정의하는 데 사용됩니다. 예를 들어 데이터 컨텍스트에 Products라는 테이블이 들어 있는 경우 DynamicData\CustomPages\Products 폴더를 만들고 이 폴더에 Products 데이터를 표시하는 데 사용되는 .aspx 페이지를 추가할 수 있습니다. 간단한 방법으로 DynamicData\PageTemplates 폴더의 페이지를 새 DynamicData\CustomPages\Products에 복사한 다음 템플릿을 수정하여 이 작업을 시작할 수 있습니다. 사용자 지정 페이지 템플릿에 대한 자세한 내용은 방법: 사용자 지정 페이지 템플릿을 사용하여 개별 테이블의 레이아웃 사용자 지정을 참조하십시오. |
FieldTemplates |
데이터 모델의 데이터 형식에 매핑되는 Dynamic Data 사용자 정의 컨트롤이 들어 있습니다. 자세한 내용은 ASP.NET Dynamic Data 필드 템플릿 개요 및 ASP.NET Dynamic Data 필드 템플릿 개요를 참조하십시오. |
PageTemplates |
데이터를 보고 편집하는 데 사용되는 UI를 생성하는 페이지 템플릿의 컨테이너 폴더입니다. 자세한 내용은 ASP.NET Dynamic Data 스캐폴딩 및 페이지 템플릿 개요를 참조하십시오. |
GridViewPager 컨트롤
GridViewPager.ascx 파일은 WebControl에서 파생되는 사용자 정의 컨트롤로, 테이블에 대해 데이터 페이지가 둘 이상 있는 경우 페이징 성능을 높이는 데 사용됩니다. GridViewPager 사용자 정의 컨트롤은 List.aspx 및 ListDetails.aspx 페이지 템플릿에 사용됩니다.
FilterUserControl 컨트롤
FilterUserControl.ascx 파일은 외래 키 열과 부울 열을 필터링하는 데 사용되는 ASP.NET 사용자 정의 컨트롤입니다. FilterUserControl 컨트롤은 List.aspx 및 ListDetails.aspx 페이지 템플릿에 사용되며 테이블의 각 외래 키와 각 부울 열에 대해 한 번씩 초기화됩니다.
예를 들어 AdventureWorksLT 데이터베이스를 사용하는 Dynamic Data 웹 사이트에서 Product 테이블의 데이터를 표시하는 페이지를 요청할 수 있습니다. Product 테이블에는 ProductCategory 테이블을 참조하는 ProductCategoryID 외래 키 열이 포함되어 있습니다. Dynamic Data는 ProductCategoryID 외래 키가 ProductCategory 테이블의 Name 필드에 해당한다고 유추합니다. 그런 다음 ProductCategoryID 필드를 ProductCategory 테이블의 Name 필드로 대체합니다.
AdventureWorksLT 데이터베이스의 Product 테이블이 표시될 때 FilterUserControl은 ProductCategoryID 필드의 유추된 이름을 사용하여 ProductCategoryID 외래 키에 대해 DropDownList 컨트롤을 만드는 데 사용됩니다. 이 목록에서 제품 범주를 선택하여 해당 제품 범주가 포함된 테이블 행만 표시할 수 있습니다. 예를 들어 Mountain Bikes를 선택하면 제품 범주가 Mountain Bikes인 행만 표시됩니다.
FilterUserControl은 테이블의 각 부울 열에도 추가됩니다. 부울 열에서는 모든 필드를 선택하거나, true 또는 false로 표시된 필드만 선택할 수 있습니다.
FilterUserControl 컨트롤의 제한 사항
FilterUserControl은 참조 테이블에 행 수가 상대적으로 적은 부울 열 및 외래 키 열에 가장 유용합니다.
참고 항목
개념
ASP.NET Dynamic Data 스캐폴딩 및 페이지 템플릿 개요