DataTypeAttribute Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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) |