방법: 사용자 지정 페이지 템플릿을 사용하여 개별 테이블의 레이아웃 사용자 지정
업데이트: 2007년 11월
ASP.NET Dynamic Data를 사용할 경우 일반적인 두 가지 방법으로 사용자 지정 템플릿을 정의할 수 있습니다. 즉, 필드 고유의 동작에 맞게 필드 템플릿을 사용자 지정하거나 테이블 고유의 동작에 맞게 페이지 템플릿을 사용자 지정할 수 있습니다.
첫 번째 방법은 사용자 지정 필드 템플릿을 만들어 테이블의 데이터 필드를 사용자 지정하는 것입니다. 그런 다음 테이블을 나타내는 엔터티 클래스와 이름이 일치하는 partial 클래스를 만듭니다. partial 클래스에서 UIHintAttribute 특성을 사용하여 표시에 사용할 사용자 지정 필드 템플릿의 이름을 지정할 수 있습니다. 자세한 내용은 방법: Dynamic Data 컨트롤의 데이터 필드 모양 및 동작 사용자 지정을 참조하십시오.
두 번째 방법은 DynamicData\CustomPages 폴더에 하위 폴더를 만드는 것입니다. 이 하위 폴더의 이름은 사용자 지정할 테이블의 데이터 컨텍스트 클래스에 있는 테이블 접근자의 이름과 일치해야 합니다. 그런 다음 이 하위 폴더에 사용자 지정 페이지 템플릿을 만듭니다. 이 항목에서는 두 번째 방법을 보여 줍니다.
기본 페이지 템플릿은 모든 테이블에서 작동하며 스키마 정보를 사용하지 않습니다. 그러나 특정 테이블에 사용자 지정 페이지 템플릿을 사용할 경우 스키마 정보를 통해 특정 필드를 표시할 수 있습니다.
사용자 지정 페이지 템플릿을 만들려면
스캐폴딩이 활성화되어 있는지 확인합니다. Global.asax 파일의 MetaModelRegisterContext() 메서드에서 ContextConfiguration.ScaffoldAllTables 속성을 true로 설정합니다.
다음 예제에서는 스캐폴딩 및 List 작업을 활성화하기 위한 호출이 포함된 RegisterRoutes 메서드를 보여 줍니다.
Public Shared Sub RegisterRoutes(ByVal routes As RouteCollection) Dim model As New MetaModel model.RegisterContext(GetType(AdventureWorksLTDataContext), _ New ContextConfiguration() With {.ScaffoldAllTables = True}) routes.Add(New DynamicDataRoute("{table}/{action}.aspx") With { _ .Constraints = New RouteValueDictionary(New With _ {.Action = "List|Details|Edit|Insert"}), _ .Model = model}) End Sub
public static void RegisterRoutes(RouteCollection routes) { MetaModel model = new MetaModel(); model.RegisterContext(typeof(AdventureWorksLTDataContext), new ContextConfiguration() { ScaffoldAllTables = true }); routes.Add(new DynamicDataRoute("{table}/{action}.aspx") { Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }), Model = model }); }
스캐폴딩 활성화에 대한 자세한 내용은 연습: 스캐폴딩을 사용하여 새 Dynamic Data 웹 사이트 만들기를 참조하십시오.
DynamicData\CustomPages 폴더에 하위 폴더를 만듭니다. 다음 지침에 따라 폴더 이름을 지정합니다.
데이터 모델이 LINQ to SQL에 기반을 두고 있으면 데이터 컨텍스트의 테이블 이름을 폴더 이름으로 사용합니다. 예를 들어 AdventureWorksLT 데이터베이스의 Product 테이블에 대한 사용자 지정 페이지를 만들려면 DynamicData\CustomPages\Products라는 디렉터리를 만듭니다.
데이터 모델이 ADO.NET Entity Framework에 기반을 두고 있으면 개체 컨텍스트의 테이블 이름을 폴더 이름으로 사용합니다. 예를 들어 AdventureWorksLT 데이터베이스의 Product 테이블에 대한 사용자 지정 페이지를 만들려면 DynamicData\CustomPages\Product라는 디렉터리를 만듭니다.
DynamicData\PageTemplates 폴더의 기존 페이지 템플릿을 DynamicData\CustomPages 폴더의 하위 폴더에 복사합니다. 이 하위 폴더의 이름은 테이블 접근자의 이름과 같습니다.
예를 들어 DynamicData\PageTemplates\List.aspx를 DynamicData\CustomPages\Products(LINQ to SQL의 경우) 또는 DynamicData\CustomPages\Product(Entity Framework의 경우)로 복사합니다.
사용자 지정한 내용을 이전 단계에서 복사한 페이지 템플릿에 추가합니다.
다음 예제에서는 변경된 제목의 태그를 보여 줍니다.
<h2> Custom Pages Demo <%= table.DisplayName%></h2>
브라우저에서 테이블로 이동한 다음 템플릿에 변경 내용이 적용되어 있는지 확인하여 사용자 지정 템플릿을 테스트합니다.
예를 들어 Product 테이블로 이동하면 "Custom Pages Demo Product"(LINQ to SQL) 및 "Custom Pages Demo Product"(Entity Framework)를 볼 수 있습니다.
참고 항목
작업
연습: 스캐폴딩을 사용하여 새 Dynamic Data 웹 사이트 만들기
개념
ASP.NET Dynamic Data 스캐폴딩 및 페이지 템플릿 개요