DataTypeAttribute Classe

Definição

Especifica o nome de um tipo adicional a ser associado a um campo de dados.

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
Herança
Derivado
Atributos

Exemplos

O exemplo a seguir usa o DataTypeAttribute atributo para personalizar a exibição do campo de dados EmailAddress. Os endereços de email são mostrados como hiperlinks em vez de texto simples, que é o que os Dados Dinâmicos infeririam do tipo de dados intrínseco. O código de exemplo está em três partes e executa as seguintes etapas:

  • Ele implementa uma classe parcial de metadados e a classe de metadados associada.

  • Na classe de metadados associada, ela aplica o DataTypeAttribute atributo ao campo de dados EmailAddress especificando o EmailAddress valor enumerado. Isso indica ao modelo de campo Text.ascx que ele deve personalizar a exibição de endereços de email.

  • Ele modifica o modelo de campo Text.ascx para personalizar a exibição dos campos de dados 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

Para compilar e executar o código de exemplo, você precisa do seguinte:

  • Qualquer edição do Visual Studio 2010 ou posterior.

  • O banco de dados de exemplo AdventureWorksLT. Para obter informações sobre como baixar e instalar o banco de dados de exemplo do SQL Server, consulte Exemplos de produto do Microsoft SQL Server: Banco de dados no GitHub. Instale a versão correta do banco de dados de exemplo para a versão do SQL Server que você está executando.

  • Um site controlado por dados. Isso permite que você crie um contexto de dados para o banco de dados e crie a classe que contém o campo de dados a ser personalizado. Para obter mais informações, consulte Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Comentários

O DataTypeAttribute atributo permite marcar campos usando um tipo mais específico do que o tipo intrínseco do banco de dados. O nome do tipo é selecionado no DataType tipo de enumeração. Por exemplo, um campo de dados de cadeia de caracteres que contém endereços de email pode ser especificado como o EmailAddress tipo . Essas informações são acessadas pelos modelos de campo para modificar como o campo de dados é processado.

Você usa o DataTypeAttribute atributo pelos seguintes motivos:

  • Para fornecer informações de tipo adicionais para um campo de dados. Faça isso aplicando o DataTypeAttribute atributo a um campo de dados no modelo de dados e especificando o nome de tipo adicional da DataType enumeração . O modelo de campo que processa o campo de dados pode acessar essas informações adicionais de tipo de metadados para determinar como processar o campo. Por exemplo, o modelo de campo de texto pode gerar hiperlinks para endereços de email cujo tipo intrínseco é String.

  • Para associar um modelo de campo personalizado a um campo de dados. O modelo de campo personalizado especificado será usado para processar o campo de dados. Essa é uma alternativa ao uso do UIHintAttribute atributo .

Ao aplicar o DataTypeAttribute atributo a um campo de dados, você deve fazer o seguinte:

  • Siga as regras de uso do atributo.

  • Implemente a classe de metadados que contém os campos de dados aos quais você deseja aplicar o atributo.

  • Emita erros de validação conforme apropriado.

Para obter mais informações, consulte ASP.NET Diretrizes de dados dinâmicos.

Construtores

DataTypeAttribute(DataType)

Inicializa uma nova instância da classe DataTypeAttribute usando o nome do tipo especificado.

DataTypeAttribute(String)

Inicializa uma nova instância da classe DataTypeAttribute usando o nome do modelo de campo especificado.

Propriedades

CustomDataType

Obtém o nome do modelo de campo personalizado que está associado com o campo de dados.

DataType

Obtém o tipo associado ao campo de dados.

DisplayFormat

Obtém um formato de exibição do campo de dados.

ErrorMessage

Obtém ou define uma mensagem de erro para associar a um controle de validação em caso de falha da validação.

(Herdado de ValidationAttribute)
ErrorMessageResourceName

Obtém ou define o nome do recurso de mensagem de erro a ser usado para pesquisar o valor da propriedade ErrorMessageResourceType se a validação falhar.

(Herdado de ValidationAttribute)
ErrorMessageResourceType

Obtém ou define o tipo de recurso a ser usado para a pesquisa de mensagens de erro se a validação falhar.

(Herdado de ValidationAttribute)
ErrorMessageString

Obtém a mensagem de erro de validação localizada.

(Herdado de ValidationAttribute)
RequiresValidationContext

Obtém ou define um valor que indica se o atributo requer contexto de validação.

(Herdado de ValidationAttribute)
TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.

(Herdado de Attribute)

Métodos

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
FormatErrorMessage(String)

Aplica formatação a uma mensagem de erro com base no campo de dados em que ocorreu o erro.

(Herdado de ValidationAttribute)
GetDataTypeName()

Retorna o nome do tipo associado ao campo de dados.

GetHashCode()

Retorna o código hash para a instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetValidationResult(Object, ValidationContext)

Verifica se o valor especificado é válido em relação ao atributo de validação atual.

(Herdado de ValidationAttribute)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
IsValid(Object)

Verifica se o valor do campo de dados é válido.

IsValid(Object, ValidationContext)

Valida o valor especificado em relação ao atributo de validação atual.

(Herdado de ValidationAttribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
Validate(Object, String)

Valida o objeto especificado.

(Herdado de ValidationAttribute)
Validate(Object, ValidationContext)

Valida o objeto especificado.

(Herdado de ValidationAttribute)

Implantações explícitas de interface

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)

Aplica-se a

Confira também