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