Comparteix a través de


DataTypeAttribute Clase

Definición

Especifica el nombre de un tipo adicional para asociar con 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.

  • La 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, consulte Ejemplos de productos de Microsoft SQL Server: Base de datos en 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, vea 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 se selecciona 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 sea String.

  • Para asociar una plantilla de campo personalizado a un campo de datos. La plantilla de campo personalizada especificada se usará para procesar el campo de datos. Esta es 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.

Para obtener más información, consulte ASP.NET Directrices de datos dinámicos.

Constructores

DataTypeAttribute(DataType)

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

DataTypeAttribute(String)

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

Propiedades

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 el formato de presentación de un 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 de validación.

(Heredado de ValidationAttribute)
ErrorMessageResourceName

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

(Heredado de ValidationAttribute)
ErrorMessageResourceType

Obtiene o establece el tipo de recurso que se va a usar para buscar el mensaje de error si se produce un error de validación.

(Heredado de ValidationAttribute)
ErrorMessageString

Obtiene el mensaje de error de validación traducido.

(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

Equals(Object)

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

(Heredado de Attribute)
FormatErrorMessage(String)

Aplica formato a un mensaje de error según el campo de datos donde 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()

Si 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)

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

IsValid(Object, ValidationContext)

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

(Heredado de ValidationAttribute)
Match(Object)

Cuando se invalida 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 Object actual.

(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

_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)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos 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 las propiedades y los métodos expuestos por un objeto.

(Heredado de Attribute)

Se aplica a

Consulte también