ASP.NET 동적 데이터 프레젠테이션 레이어 사용자 지정

Dynamic Data에서 특정 데이터베이스 스키마를 사용하지 않는 작업을 수행하는 방식을 수정할 수 있습니다. 이 수정 사항을 한 번 만들고 여러 프로젝트에 사용할 수 있습니다. 이 유형의 사용자 지정을 사용하면 데이터 엔터티를 추가하거나 수정할 때마다 사용자 지정을 다시 정의할 필요 없이 스키마에 대해 일관된 동작을 정의할 수 있습니다.

참고참고

데이터 스키마를 사용자 지정하는 방법에 대한 자세한 내용은 ASP.NET 동적 데이터 레이어 사용자 지정을 참조하십시오.

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

Dynamic Data를 사용하면 테이블 렌더링을 위한 UI를 사용자 지정하고 확장할 수 있습니다. 기본 필드 템플릿을 수정하거나 새 템플릿을 만들어 테이블이 렌더링되는 방식을 지정할 수 있습니다.

Dynamic Data를 사용하면 다음과 같은 방법으로 페이지 템플릿을 사용자 지정할 수 있습니다.

  • 모든 테이블의 레이아웃을 사용자 지정합니다. 이렇게 하려면 DynamicData\PageTemplates 폴더에 있는 페이지 템플릿을 변경합니다. 이 방법을 사용하여 데이터베이스와 독립적으로 웹 사이트에 있는 모든 테이블의 모양과 동작을 변경합니다. 자세한 내용은 방법: ASP.NET Dynamic Data 기본 필드 템플릿 사용자 지정을 참조하십시오.

  • 개별 테이블의 레이아웃을 사용자 지정합니다. 이렇게 하려면 DynamicData\CustomPages 아래에 데이터 모델에 있는 테이블의 이름과 이름이 일치하는 폴더를 만듭니다. 새 폴더에 사용자 지정할 기본 페이지 템플릿의 이름과 이름이 일치하는 페이지를 추가합니다. 특정 데이터베이스에 대해 개별 테이블의 모양 및 동작을 변경하기 위해 이 방법을 사용합니다. 자세한 내용은 방법: 사용자 지정 페이지 템플릿을 사용하여 개별 테이블의 레이아웃 사용자 지정를 참조하십시오.

엔터티 템플릿은 테이블의 전체 데이터 행에 대한 레이아웃을 사용자 지정할 수 있는 사용자 정의 컨트롤입니다. 이 템플릿은 개별 데이터 필드를 사용자 지정하는 것보다 높은 유연성을 제공하며 사용자 지정 UI를 만들어 기본 페이지 템플릿이나 사용자 지정 페이지 템플릿에 적용하려는 경우에 유용합니다. Dynamic Data를 사용하면 다음과 같은 방법으로 엔터티 템플릿을 사용자 지정할 수 있습니다.

  • 모든 테이블의 레이아웃을 사용자 지정합니다. 이렇게 하려면 기본 엔터티 템플릿을 사용자 지정합니다. DynamicData\EntityTemplates 폴더에 있는 엔터티 템플릿을 변경하여 이 사용자 지정을 수행합니다. 이 사용자 지정은 데이터 필드 사용자 지정이 제공하는 것보다 더 많은 제어를 제공하며 기본 또는 사용자 지정 페이지 템플릿에 사용자 지정 UI를 적용하려는 경우에 유용합니다.

  • 개별 테이블의 레이아웃을 사용자 지정합니다. 이렇게 하려면 명명 규칙을 사용하여 레이아웃을 사용자 지정할 테이블에 대한 사용자 지정 엔터티 템플릿을 만듭니다.

    • LINQ to SQL 데이터 모델을 사용하여 AdventureWorksLT 데이터베이스를 나타낼 경우 Address 테이블에 대한 엔터티 템플릿의 이름은 Addresses.ascx, Addresses_Edit.ascx 및 Addresses_Insert.ascx로 지정됩니다.

    • ADO Entity Framework 데이터 모델을 사용하여 AdventureWorksLT 데이터베이스를 나타낼 경우 Address 테이블에 대한 엔터티 템플릿의 이름은 Address.ascx, Address_Edit.ascx 및 Address_Insert.ascx로 지정됩니다.

이 사용자 지정 템플릿은 DynamicData\EntityTemplates 폴더에 있어야 합니다. 다음 그림에서는 사용자 지정 엔터티 템플릿을 사용하여 사용자 지정된 Address 테이블 행을 보여 줍니다.

사용자 지정 엔터티 템플릿 레이아웃

자세한 내용은 연습: 엔터티 템플릿을 사용하여 테이블 레이아웃 사용자 지정을 참조하십시오.

필드 템플릿은 Dynamic Data가 데이터 모델의 데이터 형식을 매핑하는 ASP.NET 사용자 컨트롤입니다. Dynamic Data를 사용하면 다음과 같은 방법으로 필드 템플릿을 사용자 지정할 수 있습니다.

필터 템플릿은 사용자가 선택한 열 값을 기반으로 테이블 행을 표시할 수 있는 데이터 필터링에 대한 UI를 렌더링하는 사용자 컨트롤입니다. Dynamic Data를 사용하면 다음과 같은 방법으로 필터 템플릿을 사용자 지정할 수 있습니다.

  • 특정 데이터 형식에 대한 필터를 사용자 지정합니다. 이렇게 하려면 DynamicData\FilterTemplates 폴더에서 컨트롤을 수정합니다.

  • 사용자 지정 필터를 만듭니다. 이렇게 하려면 QueryableFilterUserControl 클래스에서 파생되는 ASP.NET 사용자 정의 컨트롤을 만듭니다. 이 방법을 사용하여 기본 필터를 재정의하거나 기본 필터가 없는 경우 데이터 형식 필터를 만듭니다. 이 항목에 수반되는 Visual Studio 프로젝트 및 소스 코드는 Scaffolding Dynamic Data에서 다운로드할 수 있습니다.

자세한 내용은 연습: 표에서 부모-자식 관계에 있는 행 필터링을 참조하십시오.

Dynamic Data는 ASP.NET 라우팅을 사용하여 URL 요청을 일치시키고 처리합니다. 경로는 Global.asax 파일에 정의됩니다. Dynamic Data는 기본적으로 목록, 선택, 편집, 삽입과 같은 각 작업에 서로 다른 페이지 템플릿을 사용합니다. 목록 페이지와 세부 사항 페이지에 삭제 기능이 포함되므로 삭제 작업을 위한 페이지 템플릿은 특정하게 제공되지 않습니다.

기본 경로를 사용자 지정할 수 있습니다. 쿼리-문자열 값을 사용하는 대신 경로를 사용하여 다른 페이지 템플릿을 지정하거나 매개 변수를 전달할 수도 있습니다. 경로에 대한 자세한 내용은 ASP.NET 라우팅을 참조하십시오.

Dynamic Data를 사용하면 다음과 같은 방법으로 라우팅을 사용자 지정할 수 있습니다.

  • 모든 작업에 단일 페이지 템플릿을 사용합니다. 모든 웹 요청(작업)이 하나의 페이지로 이동하도록 경로를 사용자 지정할 수 있습니다. 다음 예제에서는 지정된 테이블에 대해 한 페이지에 있는 모든 작업을 사용할 수 있는 사용자 지정 경로를 보여 줍니다. 두 번째 경로에서는 페이지에서 레코드의 세부 정보로 이동할 수 있습니다. 예를 들어 외래 키를 기반으로 관계 테이블로 이동할 수 있습니다.

    
    routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx")
    {
        Action = PageAction.List,
        ViewName = "ListDetails",
        Model = model
    });
    
    routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx")
    {
        Action = PageAction.Details,
        ViewName = "ListDetails",
        Model = model
    });
    
    
    
  • 개별 테이블에 대한 경로를 만듭니다.

    경로는 정의된 순서대로 처리되므로 특정한 경로부터 일반적인 경로 순서로 경로를 추가해야 합니다. 다음 예제에서는 AdventureWorks 데이터베이스의 Products 테이블에 다른 페이지 템플릿을 지정하는 방법을 보여 줍니다.

    
    routes.Add(new DynamicDataRoute("Products/{action}.aspx")
    {
        ViewName = "ListDetails",
        Table = "Products",
        Model = model
    });
    
    routes.Add(new DynamicDataRoute("{table}/{action}.aspx")
    {
        Constraints = new RouteValueDictionary(
          new { action = "List|Details|Edit|Insert" }),
        Model = model
    });
    
    
    

맨 위로 이동

표시: