DataTypeAttribute Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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) |