다음을 통해 공유


DataTypeAttribute 클래스

정의

데이터 필드에 연결할 추가 형식의 이름을 지정합니다.

public ref class DataTypeAttribute : System::ComponentModel::DataAnnotations::ValidationAttribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Method | System.AttributeTargets.Parameter | System.AttributeTargets.Property, AllowMultiple=false)]
public class DataTypeAttribute : System.ComponentModel.DataAnnotations.ValidationAttribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=false)]
public class DataTypeAttribute : System.ComponentModel.DataAnnotations.ValidationAttribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Method | System.AttributeTargets.Parameter | System.AttributeTargets.Property, AllowMultiple=false)>]
type DataTypeAttribute = class
    inherit ValidationAttribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=false)>]
type DataTypeAttribute = class
    inherit ValidationAttribute
Public Class DataTypeAttribute
Inherits ValidationAttribute
상속
파생
특성

예제

다음 예제에서는 특성을 사용하여 DataTypeAttribute EmailAddress 데이터 필드의 표시를 사용자 지정합니다. 전자 메일 주소는 간단한 텍스트가 아닌 하이퍼링크로 표시됩니다. 즉, 동적 데이터가 기본 데이터 형식에서 유추합니다. 예제 코드는 세 부분으로 구성되어 있으며 다음 단계를 수행합니다.

  • 메타데이터 partial 클래스 및 연결된 메타데이터 클래스를 구현합니다.

  • 연결된 메타데이터 클래스에서 열거형 값을 지정하여 EmailAddress EmailAddress 데이터 필드에 특성을 적용 DataTypeAttribute 합니다. 이는 Text.ascx 필드 템플릿에 전자 메일 주소 표시를 사용자 지정해야 했음을 나타냅니다.

  • Text.ascx 필드 템플릿을 수정하여 EmailAddress 데이터 필드의 표시를 사용자 지정합니다.

using System;
using System.Web.DynamicData;
using System.ComponentModel.DataAnnotations;

[MetadataType(typeof(CustomerMetaData))]
public partial class Customer
{
}

public class CustomerMetaData
{

    // Add type information.
    [DataType(DataType.EmailAddress)]
    public object EmailAddress;
}
Imports System.Web.DynamicData
Imports System.ComponentModel.DataAnnotations

<MetadataType(GetType(CustomerMetadata))> _
Partial Public Class Customer


End Class

Public Class CustomerMetadata

    ' Add type information.
    <DataType(DataType.EmailAddress)> _
    Public EmailAddress As Object

End Class

<%@ Control Language="C#" 
CodeFile="Text.ascx.cs" Inherits="TextField" %>

<!-- Removed, evaluated in the code behind.
<%# FieldValueString %> -->
<%@ Control Language="VB" 
  CodeFile="Text.ascx.vb" Inherits="TextField" %>

<!-- Removed, evaluated in the code behind.
<%# FieldValueString %> -->
using System;
using System.Linq;
using System.Web.UI.WebControls;
using System.Web.DynamicData;
using System.ComponentModel.DataAnnotations;

public partial class TextField : 
    System.Web.DynamicData.FieldTemplateUserControl {

    protected override void OnDataBinding(EventArgs e)
    {
        base.OnDataBinding(e);
        bool processed = false;
        var metadata = MetadataAttributes.OfType
            <DataTypeAttribute>().FirstOrDefault();
        if (metadata != null)
        {
            if (metadata.DataType == DataType.EmailAddress)
            {
                if (!string.IsNullOrEmpty(FieldValueString))
                {
                    processed = true;
                    HyperLink hyperlink = new HyperLink();
                    hyperlink.Text = FieldValueString;
                    hyperlink.NavigateUrl = "mailto:" + FieldValueString;
                    Controls.Add(hyperlink);
                }
            }
        }
        if (!processed)
        {
            Literal literal = new Literal();
            literal.Text = FieldValueString;
            Controls.Add(literal);
        }
    }
}
Imports System.Linq
Imports System.Web.UI.WebControls
Imports System.Web.DynamicData
Imports System.ComponentModel.DataAnnotations

Partial Public Class TextField
    Inherits System.Web.DynamicData.FieldTemplateUserControl

    Protected Overloads Overrides Sub OnDataBinding(ByVal e As EventArgs)
        MyBase.OnDataBinding(e)
        Dim processed As Boolean = False
        Dim metadata As DataTypeAttribute = _
           MetadataAttributes.OfType(Of DataTypeAttribute)().FirstOrDefault()
        If metadata IsNot Nothing Then
            If metadata.DataType = DataType.EmailAddress Then
                If Not String.IsNullOrEmpty(FieldValueString) Then
                    processed = True
                    Dim hyperlink As New HyperLink()
                    hyperlink.Text = FieldValueString
                    hyperlink.NavigateUrl = "mailto:" + FieldValueString
                    Controls.Add(hyperlink)
                End If
            End If
        End If
        If Not processed Then
            Dim literal As New Literal()
            literal.Text = FieldValueString
            Controls.Add(literal)
        End If
    End Sub

End Class

예제 코드를 컴파일하고 실행하려면 다음이 필요합니다.

  • Visual Studio 2010 이상의 모든 버전.

  • AdventureWorksLT 샘플 데이터베이스입니다. SQL Server 샘플 데이터베이스를 다운로드하고 설치하는 방법에 대한 자세한 내용은 Microsoft SQL Server 제품 샘플: GitHub의 데이터베이스를 참조하세요. 실행 중인 SQL Server 버전에 대해 올바른 버전의 샘플 데이터베이스를 설치해야 합니다.

  • 데이터 기반 웹 사이트입니다. 이렇게 하면 데이터베이스에 대한 데이터 컨텍스트를 만들고 사용자 지정할 데이터 필드가 포함된 클래스를 만들 수 있습니다. 자세한 내용은 Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding를 참조하세요.

설명

DataTypeAttribute 특성을 사용하면 데이터베이스 내장 형식보다 더 구체적인 형식을 사용하여 필드를 표시할 수 있습니다. 형식 이름은 열거형 형식에서 DataType 선택됩니다. 예를 들어 전자 메일 주소를 포함하는 문자열 데이터 필드를 형식으로 EmailAddress 지정할 수 있습니다. 그런 다음, 필드 템플릿에서 이 정보에 액세스하여 데이터 필드 처리 방법을 수정합니다.

다음과 같은 이유로 특성을 사용합니다 DataTypeAttribute .

  • 데이터 필드에 대한 추가 형식 정보를 제공합니다. 데이터 모델의 데이터 필드에 특성을 적용하고 DataTypeAttribute 열거형에서 DataType 추가 형식 이름을 지정하여 이 작업을 수행합니다. 데이터 필드를 처리하는 필드 템플릿은 이 추가 메타데이터 형식 정보에 액세스하여 필드를 처리하는 방법을 결정할 수 있습니다. 예를 들어 텍스트 필드 템플릿은 내장 형식 String이 인 이메일 주소에 대한 하이퍼링크를 생성할 수 있습니다.

  • 사용자 지정 필드 템플릿을 데이터 필드와 연결하려면 그런 다음 지정된 사용자 지정 필드 템플릿을 사용하여 데이터 필드를 처리합니다. 이는 특성을 사용하는 대신 사용할 UIHintAttribute 수 있습니다.

데이터 필드에 특성을 적용 DataTypeAttribute 하는 경우 다음을 수행해야 합니다.

  • 특성 사용 규칙을 따릅니다.

  • 특성을 적용하려는 데이터 필드가 포함된 메타데이터 클래스를 구현합니다.

  • 유효성 검사 오류를 적절하게 실행합니다.

자세한 내용은 ASP.NET 동적 데이터 지침을 참조하세요.

생성자

DataTypeAttribute(DataType)

지정된 형식 이름을 사용하여 DataTypeAttribute 클래스의 새 인스턴스를 초기화합니다.

DataTypeAttribute(String)

지정된 필드 템플릿 이름을 사용하여 DataTypeAttribute 클래스의 새 인스턴스를 초기화합니다.

속성

CustomDataType

데이터 필드에 연결된 사용자 지정 필드 템플릿의 이름을 가져옵니다.

DataType

데이터 필드에 연결된 형식을 가져옵니다.

DisplayFormat

데이터 필드 표시 형식을 가져옵니다.

ErrorMessage

유효성 검사에 실패하는 경우 유효성 검사 컨트롤과 연결할 오류 메시지를 가져오거나 설정합니다.

(다음에서 상속됨 ValidationAttribute)
ErrorMessageResourceName

유효성 검사에 실패할 경우 ErrorMessageResourceType 속성 값을 조회하는 데 사용할 오류 메시지 리소스 이름을 가져오거나 설정합니다.

(다음에서 상속됨 ValidationAttribute)
ErrorMessageResourceType

유효성 검사에 실패할 경우 오류 메시지 조회에 사용할 리소스 형식을 가져오거나 설정합니다.

(다음에서 상속됨 ValidationAttribute)
ErrorMessageString

지역화된 유효성 검사 오류 메시지를 가져옵니다.

(다음에서 상속됨 ValidationAttribute)
RequiresValidationContext

특성에 유효성 검사 컨텍스트가 필요한지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 ValidationAttribute)
TypeId

파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다.

(다음에서 상속됨 Attribute)

메서드

Equals(Object)

이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다.

(다음에서 상속됨 Attribute)
FormatErrorMessage(String)

오류가 발생한 데이터 필드를 기반으로 하여 오류 메시지에 서식을 적용합니다.

(다음에서 상속됨 ValidationAttribute)
GetDataTypeName()

데이터 필드에 연결된 형식의 이름을 반환합니다.

GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.

(다음에서 상속됨 Attribute)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
GetValidationResult(Object, ValidationContext)

현재 유효성 검사 특성에 따라 지정된 값이 유효한지 확인합니다.

(다음에서 상속됨 ValidationAttribute)
IsDefaultAttribute()

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.

(다음에서 상속됨 Attribute)
IsValid(Object)

데이터 필드 값이 유효한지 확인합니다.

IsValid(Object, ValidationContext)

현재 유효성 검사 특성에 따라 지정된 값이 유효한지 검사합니다.

(다음에서 상속됨 ValidationAttribute)
Match(Object)

파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.

(다음에서 상속됨 Attribute)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
Validate(Object, String)

지정된 개체의 유효성을 검사합니다.

(다음에서 상속됨 ValidationAttribute)
Validate(Object, ValidationContext)

지정된 개체의 유효성을 검사합니다.

(다음에서 상속됨 ValidationAttribute)

명시적 인터페이스 구현

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).

(다음에서 상속됨 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.

(다음에서 상속됨 Attribute)

적용 대상

추가 정보