DataTypeAttribute Classe

Définition

Spécifie le nom d’un type supplémentaire à associer à un champ de données.

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
Héritage
Dérivé
Attributs

Exemples

L’exemple suivant utilise l’attribut pour personnaliser l’affichage DataTypeAttribute du champ de données EmailAddress. Les adresses e-mail sont affichées sous forme de liens hypertexte au lieu d’un texte simple, c’est-à-dire ce que les données dynamiques déduireaient du type de données intrinsèque. L’exemple de code se trouve en trois parties et effectue les étapes suivantes :

  • Il implémente une classe partielle de métadonnées et la classe de métadonnées associée.

  • Dans la classe de métadonnées associée, elle applique l’attribut DataTypeAttribute au champ de données EmailAddress en spécifiant la EmailAddress valeur énumérée. Cela indique au modèle de champ Text.ascx qu’il doit personnaliser l’affichage des adresses e-mail.

  • Il modifie le modèle de champ Text.ascx pour personnaliser l’affichage des champs de données 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

Pour compiler et exécuter l’exemple de code, vous avez besoin des éléments suivants :

  • Toute édition de Visual Studio 2010 ou version ultérieure.

  • Exemple de base de données AdventureWorksLT. Pour plus d’informations sur le téléchargement et l’installation de l’exemple de base de données SQL Server, consultez Microsoft SQL Server Exemples de produits : Base de données sur GitHub. Veillez à installer la version correcte de l’exemple de base de données pour la version de SQL Server que vous exécutez.

  • Un site web piloté par les données. Cela vous permet de créer un contexte de données pour la base de données et de créer la classe qui contient le champ de données à personnaliser. Pour plus d’informations, consultez Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Remarques

L’attribut DataTypeAttribute vous permet de marquer des champs à l’aide d’un type plus spécifique que le type intrinsèque de base de données. Le nom du type est sélectionné dans le type d’énumération DataType . Par exemple, un champ de données de chaîne qui contient des adresses e-mail peut être spécifié comme EmailAddress type. Ces informations sont ensuite accessibles par les modèles de champs pour modifier la façon dont le champ de données est traité.

Vous utilisez l’attribut DataTypeAttribute pour les raisons suivantes :

  • Pour fournir des informations de type supplémentaires pour un champ de données. Pour ce faire, appliquez l’attribut DataTypeAttribute à un champ de données dans le modèle de données et en spécifiant le nom de type supplémentaire de l’énumération DataType . Le modèle de champ qui traite le champ de données peut accéder à ces informations de type de métadonnées supplémentaires pour déterminer comment traiter le champ. Par exemple, le modèle de champ de texte peut générer des liens hypertexte pour les adresses e-mail dont le type intrinsèque est String.

  • Pour associer un modèle de champ personnalisé à un champ de données. Le modèle de champ personnalisé spécifié sera ensuite utilisé pour traiter le champ de données. Il s’agit d’une alternative à l’utilisation de l’attribut UIHintAttribute .

Lorsque vous appliquez l’attribut DataTypeAttribute à un champ de données, vous devez effectuer les opérations suivantes :

  • Suivez les règles d’utilisation des attributs.

  • Implémentez la classe de métadonnées qui contient les champs de données auxquels vous souhaitez appliquer l’attribut.

  • Émettez des erreurs de validation selon les besoins.

Constructeurs

Nom Description
DataTypeAttribute(DataType)

Initialise une nouvelle instance de la DataTypeAttribute classe à l’aide du nom de type spécifié.

DataTypeAttribute(String)

Initialise une nouvelle instance de la DataTypeAttribute classe à l’aide du nom de modèle de champ spécifié.

Propriétés

Nom Description
CustomDataType

Obtient le nom du modèle de champ personnalisé associé au champ de données.

DataType

Obtient le type associé au champ de données.

DisplayFormat

Obtient un format d’affichage de champ de données.

ErrorMessage

Obtient ou définit un message d’erreur à associer à un contrôle de validation en cas d’échec de la validation.

(Hérité de ValidationAttribute)
ErrorMessageResourceName

Obtient ou définit le nom de la ressource de message d’erreur à utiliser pour rechercher la valeur de propriété ErrorMessageResourceType en cas d’échec de la validation.

(Hérité de ValidationAttribute)
ErrorMessageResourceType

Obtient ou définit le type de ressource à utiliser pour la recherche de message d’erreur en cas d’échec de la validation.

(Hérité de ValidationAttribute)
ErrorMessageString

Obtient le message d’erreur de validation localisé.

(Hérité de ValidationAttribute)
RequiresValidationContext

Obtient une valeur qui indique si l’attribut nécessite un contexte de validation.

(Hérité de ValidationAttribute)
TypeId

En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute.

(Hérité de Attribute)

Méthodes

Nom Description
Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
FormatErrorMessage(String)

Applique la mise en forme à un message d’erreur, en fonction du champ de données où l’erreur s’est produite.

(Hérité de ValidationAttribute)
GetDataTypeName()

Retourne le nom du type associé au champ de données.

GetHashCode()

Retourne le code de hachage pour cette instance.

(Hérité de Attribute)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
GetValidationResult(Object, ValidationContext)

Vérifie si la valeur spécifiée est valide par rapport à l’attribut de validation actuel.

(Hérité de ValidationAttribute)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut de la classe dérivée.

(Hérité de Attribute)
IsValid(Object, ValidationContext)

Valide la valeur spécifiée par rapport à l’attribut de validation actuel.

(Hérité de ValidationAttribute)
IsValid(Object)

Vérifie que la valeur du champ de données est valide.

Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)
Validate(Object, String)

Valide l’objet spécifié.

(Hérité de ValidationAttribute)
Validate(Object, ValidationContext)

Valide l’objet spécifié.

(Hérité de ValidationAttribute)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type d’un objet, qui peuvent être utilisées pour obtenir les informations de type d’une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l’accès aux propriétés et méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à

Voir aussi