DataTypeAttribute, classe (System.ComponentModel.DataAnnotations)

Changer de vue:
ScriptFree
Bibliothèque de classes .NET Framework
DataTypeAttribute, classe
Cet article a fait l'objet d'une traduction manuelle. Pour afficher simultanément cette page et le contenu source en anglais, choisissez le paramètre d'affichage Basse densité.

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

Hiérarchie d'héritage

System.Object
  System.Attribute
    System.ComponentModel.DataAnnotations.ValidationAttribute
      System.ComponentModel.DataAnnotations.DataTypeAttribute
        System.ComponentModel.DataAnnotations.EnumDataTypeAttribute

Espace de noms :  System.ComponentModel.DataAnnotations
Assembly :  System.ComponentModel.DataAnnotations (dans System.ComponentModel.DataAnnotations.dll)
Syntaxe

Visual Basic
<AttributeUsageAttribute(AttributeTargets.Method Or AttributeTargets.Property Or AttributeTargets.Field Or AttributeTargets.Parameter, AllowMultiple := False)> _
Public Class DataTypeAttribute _
	Inherits ValidationAttribute
C#
[AttributeUsageAttribute(AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Parameter, AllowMultiple = false)]
public class DataTypeAttribute : ValidationAttribute
VisualC++
[AttributeUsageAttribute(AttributeTargets::Method|AttributeTargets::Property|AttributeTargets::Field|AttributeTargets::Parameter, AllowMultiple = false)]
public ref class DataTypeAttribute : public ValidationAttribute
F#
[<AttributeUsageAttribute(AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Parameter, AllowMultiple = false)>]
type DataTypeAttribute =  
    class
        inherit ValidationAttribute
    end

Le type DataTypeAttribute expose les membres suivants.

Constructeurs

  Nom Description
Méthode publique DataTypeAttribute(DataType) Initialise une nouvelle instance de la classe DataTypeTypeAttribute à l'aide du nom de type spécifié.
Méthode publique DataTypeAttribute(String) Initialise une nouvelle instance de la classe DataTypeTypeAttribute à l'aide du nom de modèle de champ spécifié.
Début
Propriétés

  Nom Description
Propriété publique CustomDataType Obtient le nom du modèle de champ personnalisé associé au champ de données.
Propriété publique DataType Obtient le type associé au champ de données.
Propriété publique DisplayFormat Obtient un format d'affichage de champ de données.
Propriété publique ErrorMessage Obtient ou définit un message d'erreur à associer à un contrôle de validation si la validation échoue. (Hérité de ValidationAttribute.)
Propriété publique ErrorMessageResourceName Obtient ou définit le nom de la ressource de message d'erreur à utiliser pour rechercher la valeur de la propriété ErrorMessageResourceType si la validation échoue. (Hérité de ValidationAttribute.)
Propriété publique ErrorMessageResourceType Obtient ou définit le type de ressource à utiliser pour la recherche de message d'erreur si une validation échoue. (Hérité de ValidationAttribute.)
Propriété protégée ErrorMessageString Obtient le message d'erreur de validation localisé. (Hérité de ValidationAttribute.)
Propriété publique TypeId Lors de son implémentation dans une classe dérivée, obtient un identificateur unique pour Attribute. (Hérité de Attribute.)
Début
Méthodes

  Nom Description
Méthode publique Equals Infrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode protégée Finalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de netto***ge avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publique FormatErrorMessage Applique la mise en forme à un message d'erreur en fonction du champ de données dans lequel l'erreur s'est produite. (Hérité de ValidationAttribute.)
Méthode publique GetDataTypeName Retourne le nom du type associé au champ de données.
Méthode publique GetHashCode Retourne le code de hachage pour cette instance. (Hérité de Attribute.)
Méthode publique GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publique GetValidationResult Vérifie si la valeur spécifiée est valide en tenant compte de l'attribut de validation actuel. (Hérité de ValidationAttribute.)
Méthode publique IsDefaultAttribute En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute.)
Méthode publique IsValid(Object) Vérifie que la valeur du champ de données est valide. (Substitue ValidationAttribute.IsValid(Object).)
Méthode protégée IsValid(Object, ValidationContext) Valide la valeur spécifiée en tenant compte de l'attribut de validation actuel. (Hérité de ValidationAttribute.)
Méthode publique Match En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode protégée MemberwiseClone Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode publique ToString Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.)
Méthode publique Validate(Object, ValidationContext) Valide l'objet spécifié. (Hérité de ValidationAttribute.)
Méthode publique Validate(Object, String) Valide l'objet spécifié. (Hérité de ValidationAttribute.)
Début
Implémentations d'interface explicite

  Nom Description
Implémentation d'interface explicite Méthode privée _Attribute.GetIDsOfNames Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.)
Implémentation d'interface explicite Méthode privée _Attribute.GetTypeInfo Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute.)
Implémentation d'interface explicite Méthode privée _Attribute.GetTypeInfoCount Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.)
Implémentation d'interface explicite Méthode privée _Attribute.Invoke Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute.)
Début
Notes

L'attribut DataTypeAttribute vous permet de marquer des champs à l'aide d'un type qui est plus spécifique que le type intrinsèque de la base de données. Le nom de type est sélectionné à partir du type énumération DataType. Par exemple, un champ de données de type chaîne qui contient des adresses de messagerie peut être spécifié comme type EmailAddress. Ces informations sont ensuite accessibles par les modèles de champs afin de 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 cela, vous appliquez l'attribut DataTypeAttribute à un champ de données dans le modèle de données et vous spécifiez le nom de type supplémentaire à partir 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 des adresses de messagerie 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 :

  • suivre les règles d'utilisation de l'attribut ;

  • implémenter la classe de métadonnées qui contient les champs de données auxquels vous souhaitez appliquer l'attribut ;

  • émettre des erreurs de validation le cas échéant.

Pour plus d'informations, consultez Instructions relatives à Dynamic Data ASP.NET.

Consultez un exemple de code de runtime de cette fonctionnalité : Run.

Exemples

L'exemple suivant utilise l'attribut DataTypeAttribute pour personnaliser l'affichage du champ de données EmailAddress. Les adresses de messagerie sont indiquées comme liens hypertexte plutôt que texte simple, qui est ce que Dynamic Data déduirait du type de données intrinsèque. L'exemple de code est composé de trois parties et il exécute les étapes suivantes :

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

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

  • Il modifie le modèle de champ Text.ascx pour personnaliser l'affichage des champs de données EmailAddress.

Visual Basic

Imports System
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



C#

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;

}



Visual Basic

<%@ Control Language="VB" 
  CodeFile="Text.ascx.vb" Inherits="TextField" %>

<!-- Removed, evaluated in the code behind.
<%# FieldValueString %> --> 




C#


<%@ Control Language="C#" 
CodeFile="Text.ascx.cs" Inherits="TextField" %>

<!-- Removed, evaluated in the code behind.
<%# FieldValueString %> --> 



Visual Basic

Imports System
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


C#

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

}


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

  • Visual Studio 2008 Service Pack 1 ou Visual Developer 2008 Express Edition Service Pack 1.

  • L'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 Exemples de produits Microsoft SQL Server : Base de données (en anglais) sur le site CodePlex. Assurez-vous d'installer la version de l'exemple de base de données correspondant à la version de SQL Server que vous exécutez (SQL Server 2005 ou SQL Server 2008).

  • Un site Web piloté par des données. Celui-ci vous permet de créer un contexte de données pour la base de données, ainsi que 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.

Informations de version

.NET Framework

Pris en charge dans : 4, 3.5 SP1

.NET Framework Client Profile

Pris en charge dans : 4
Plateformes

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Voir aussi

Référence

Autres ressources