DataTypeAttribute Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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) |