DataTypeAttribute Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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) |