DataTypeAttribute Clase

Definición

Especifica el nombre de un tipo adicional que se va a asociar a un campo de datos.

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
Herencia
Derivado
Atributos

Ejemplos

En el ejemplo siguiente se usa el DataTypeAttribute atributo para personalizar la presentación del campo de datos EmailAddress. Las direcciones de correo electrónico se muestran como hipervínculos en lugar de como texto simple, que es lo que los datos dinámicos deducirían del tipo de datos intrínseco. El código de ejemplo está en tres partes y realiza los pasos siguientes:

  • Implementa una clase parcial de metadatos y la clase de metadatos asociada.

  • En la clase de metadatos asociada, aplica el DataTypeAttribute atributo al campo de datos EmailAddress especificando el EmailAddress valor enumerado. Esto indica a la plantilla de campo Text.ascx que debe personalizar la presentación de direcciones de correo electrónico.

  • Modifica la plantilla de campo Text.ascx para personalizar la presentación de los campos de datos 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 y ejecutar el código de ejemplo, necesita lo siguiente:

  • Cualquier edición de Visual Studio 2010 o posterior.

  • Base de datos de ejemplo AdventureWorksLT. Para obtener información sobre cómo descargar e instalar la base de datos de ejemplo de SQL Server, vea Microsoft SQL Server Product Samples: Database on GitHub. Asegúrese de instalar la versión correcta de la base de datos de ejemplo para la versión de SQL Server que está ejecutando.

  • Un sitio web controlado por datos. Esto le permite crear un contexto de datos para la base de datos y crear la clase que contiene el campo de datos que se va a personalizar. Para obtener más información, consulte Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Comentarios

El DataTypeAttribute atributo permite marcar campos mediante un tipo más específico que el tipo intrínseco de la base de datos. El nombre de tipo está seleccionado en el DataType tipo de enumeración. Por ejemplo, un campo de datos de cadena que contiene direcciones de correo electrónico se puede especificar como el EmailAddress tipo . A continuación, las plantillas de campo acceden a esta información para modificar cómo se procesa el campo de datos.

Use el DataTypeAttribute atributo por los siguientes motivos:

  • Para proporcionar información de tipo adicional para un campo de datos. Para ello, aplique el DataTypeAttribute atributo a un campo de datos en el modelo de datos y especifique el nombre de tipo adicional de la DataType enumeración. La plantilla de campo que procesa el campo de datos puede acceder a esta información adicional de tipo de metadatos para determinar cómo procesar el campo. Por ejemplo, la plantilla de campo de texto puede generar hipervínculos para direcciones de correo electrónico cuyo tipo intrínseco es String.

  • Para asociar una plantilla de campo personalizada a un campo de datos. A continuación, se usará la plantilla de campo personalizada especificada para procesar el campo de datos. Se trata de una alternativa al uso del UIHintAttribute atributo .

Al aplicar el DataTypeAttribute atributo a un campo de datos, debe hacer lo siguiente:

  • Siga las reglas de uso de atributos.

  • Implemente la clase de metadatos que contiene los campos de datos a los que desea aplicar el atributo .

  • Emita errores de validación según corresponda.

Constructores

Nombre Description
DataTypeAttribute(DataType)

Inicializa una nueva instancia de la DataTypeAttribute clase mediante el nombre de tipo especificado.

DataTypeAttribute(String)

Inicializa una nueva instancia de la DataTypeAttribute clase mediante el nombre de plantilla de campo especificado.

Propiedades

Nombre Description
CustomDataType

Obtiene el nombre de la plantilla de campo personalizada asociada al campo de datos.

DataType

Obtiene el tipo asociado al campo de datos.

DisplayFormat

Obtiene un formato de presentación de campo de datos.

ErrorMessage

Obtiene o establece un mensaje de error que se va a asociar a un control de validación si se produce un error en la validación.

(Heredado de ValidationAttribute)
ErrorMessageResourceName

Obtiene o establece el nombre del recurso del mensaje de error que se va a usar para buscar el valor de la propiedad si se produce un error en la ErrorMessageResourceType validación.

(Heredado de ValidationAttribute)
ErrorMessageResourceType

Obtiene o establece el tipo de recurso que se va a usar para la búsqueda de mensajes de error si se produce un error en la validación.

(Heredado de ValidationAttribute)
ErrorMessageString

Obtiene el mensaje de error de validación localizado.

(Heredado de ValidationAttribute)
RequiresValidationContext

Obtiene un valor que indica si el atributo requiere contexto de validación.

(Heredado de ValidationAttribute)
TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.

(Heredado de Attribute)

Métodos

Nombre Description
Equals(Object)

Devuelve un valor que indica si esta instancia es igual a un objeto especificado.

(Heredado de Attribute)
FormatErrorMessage(String)

Aplica formato a un mensaje de error, en función del campo de datos en el que se produjo el error.

(Heredado de ValidationAttribute)
GetDataTypeName()

Devuelve el nombre del tipo asociado al campo de datos.

GetHashCode()

Devuelve el código hash de esta instancia.

(Heredado de Attribute)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
GetValidationResult(Object, ValidationContext)

Comprueba si el valor especificado es válido con respecto al atributo de validación actual.

(Heredado de ValidationAttribute)
IsDefaultAttribute()

Cuando se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.

(Heredado de Attribute)
IsValid(Object, ValidationContext)

Valida el valor especificado con respecto al atributo de validación actual.

(Heredado de ValidationAttribute)
IsValid(Object)

Comprueba que el valor del campo de datos es válido.

Match(Object)

Cuando se reemplaza en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
Validate(Object, String)

Valida el objeto especificado.

(Heredado de ValidationAttribute)
Validate(Object, ValidationContext)

Valida el objeto especificado.

(Heredado de ValidationAttribute)

Implementaciones de interfaz explícitas

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

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

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

Recupera la información de tipo de un objeto, que se puede usar para obtener la información de tipo de una interfaz.

(Heredado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

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

Proporciona acceso a propiedades y métodos expuestos por un objeto .

(Heredado de Attribute)

Se aplica a

Consulte también