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 DataTypeAttribute pour personnaliser l’affichage du champ de données EmailAddress. Les adresses e-mail sont affichées sous forme de liens hypertexte au lieu de texte simple, ce qui est ce que Dynamic Data déduit à partir du type de données intrinsèque. L’exemple de code se présente 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, il 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 :

  • N’importe quelle é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 Exemples de produits Microsoft SQL Server : 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.

  • 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 de 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 champ 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 spécifiez 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 le cas échéant.

Pour plus d’informations, consultez ASP.NET Instructions relatives aux données dynamiques.

Constructeurs

DataTypeAttribute(DataType)

Initialise une nouvelle instance de la classe DataTypeAttribute en utilisant le nom de type spécifié.

DataTypeAttribute(String)

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

Propriétés

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 si la validation échoue.

(Hérité de ValidationAttribute)
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)
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)
ErrorMessageString

Obtient le message d'erreur de validation localisé.

(Hérité de ValidationAttribute)
RequiresValidationContext

Obtient une valeur qui indique si l'attribut requiert un contexte de validation.

(Hérité de ValidationAttribute)
TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.

(Hérité de Attribute)

Méthodes

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 dans lequel 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 de cette instance.

(Hérité de Attribute)
GetType()

Obtient le Type de l'instance actuelle.

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

Vérifie si la valeur spécifiée est valide en tenant compte de 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 pour la classe dérivée.

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

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

IsValid(Object, ValidationContext)

Valide la valeur spécifiée en tenant compte de l'attribut de validation actuel.

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

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

Crée une copie superficielle du Object actuel.

(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

_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 pour 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 aux méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à

Voir aussi