DataTypeAttribute Classe

Definição

Especifica o nome de um tipo adicional a associar 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 seguinte utiliza o DataTypeAttribute atributo para personalizar a visualização do campo de dados Endereço de Email. Os endereços de email são mostrados como hiperligações em vez de simples texto, que é o que a Dynamic Data inferiria a partir do tipo de dado intrínseco. O código de exemplo está dividido em três partes e executa os seguintes passos:

  • Implementa uma classe parcial de metadados e a classe de metadados associada.

  • Na classe de metadados associada, aplica-se o DataTypeAttribute atributo ao campo de dados Endereço de Email, especificando o EmailAddress valor enumerado. Isto indica ao modelo de campo Text.ascx que deve personalizar a visualização dos endereços de email.

  • Modifica o modelo de campo Text.ascx para personalizar a visualização dos campos de dados Endereço de Email.

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, precisa do seguinte:

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

  • A base de dados de exemplos AdventureWorksLT. Para informações sobre como descarregar e instalar a base de dados de exemplos SQL Server, consulte Microsoft SQL Server Product Samples: Database no GitHub. Certifica-te de que instalas a versão correta da base de dados de exemplo para a versão do SQL Server que estás a usar.

  • Um site orientado por dados. Isto permite-lhe criar um contexto de dados para a base de dados e criar a classe que contém o campo de dados para personalizar. Para obter mais informações, veja Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Observações

O DataTypeAttribute atributo permite-lhe marcar campos usando um tipo mais específico do que o tipo intrínseco da base de dados. O nome do tipo é selecionado a partir do DataType tipo de enumeração. Por exemplo, um campo de dados em cadeia que contém endereços de email pode ser especificado como o EmailAddress tipo. Esta informação é então acedida pelos templates de campo para modificar a forma como o campo de dados é processado.

Usas o DataTypeAttribute atributo pelas seguintes razões:

  • Para fornecer informação adicional de tipo para um campo de dados. Faz-se isto aplicando o DataTypeAttribute atributo a um campo de dados no modelo de dados e especificando o nome adicional do tipo da DataType enumeração. O modelo de campo que processa o campo de dados pode aceder a esta informação adicional sobre o tipo de metadados para determinar como processar o campo. Por exemplo, o modelo de campo de texto pode gerar hiperligações para endereços de email cujo tipo intrínseco é String.

  • Associar um modelo de campo personalizado a um campo de dados. O modelo de campo personalizado especificado será então usado para processar o campo de dados. Isto é uma alternativa ao uso do UIHintAttribute atributo.

Quando aplica o DataTypeAttribute atributo a um campo de dados, deve fazer o seguinte:

  • Segue as regras de utilização de atributos.

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

  • Emitir erros de validação conforme apropriado.

Para mais informações, consulte ASP.NET Diretrizes de Dados Dinâmicos.

Construtores

Name Description
DataTypeAttribute(DataType)

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

DataTypeAttribute(String)

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

Propriedades

Name Description
CustomDataType

Obtém o nome do modelo de campo personalizado associado ao campo de dados.

DataType

Obtém o tipo associado ao campo de dados.

DisplayFormat

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

ErrorMessage

Recebe ou define uma mensagem de erro para associar a um controlo de validação se a validação falhar.

(Herdado de ValidationAttribute)
ErrorMessageResourceName

Recebe ou define o nome do recurso da mensagem de erro para ser usado para consultar o valor da ErrorMessageResourceType propriedade caso a validação falhe.

(Herdado de ValidationAttribute)
ErrorMessageResourceType

Obtém ou define o tipo de recurso a usar para a consulta de mensagens de erro caso a validação falhe.

(Herdado de ValidationAttribute)
ErrorMessageString

Recebe a mensagem de erro de validação localizada.

(Herdado de ValidationAttribute)
RequiresValidationContext

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

(Herdado de ValidationAttribute)
TypeId

Quando implementado numa classe derivada, obtém um identificador único para esta Attribute.

(Herdado de Attribute)

Métodos

Name Description
Equals(Object)

Devolve um valor que indica se esta 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 onde ocorreu o erro.

(Herdado de ValidationAttribute)
GetDataTypeName()

Devolve o nome do tipo associado ao campo de dados.

GetHashCode()

Devolve o código de hash para esta 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 relativamente ao atributo de validação atual.

(Herdado de ValidationAttribute)
IsDefaultAttribute()

Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
IsValid(Object, ValidationContext)

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

(Herdado de ValidationAttribute)
IsValid(Object)

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

Match(Object)

Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia 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)

Implementações de Interface Explícita

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

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

Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

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

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

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

(Herdado de Attribute)

Aplica-se a

Ver também