Condividi tramite


DataTypeAttribute Classe

Definizione

Specifica il nome di un tipo aggiuntivo da associare a un campo dati.

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
Ereditarietà
Derivato
Attributi

Esempio

Nell'esempio seguente viene usato l'attributo per personalizzare la DataTypeAttribute visualizzazione del campo dati EmailAddress. Gli indirizzi di posta elettronica vengono visualizzati come collegamenti ipertestuali anziché come testo semplice, ovvero quali dati dinamici dedurrebbero dal tipo di dati intrinseco. Il codice di esempio è in tre parti ed esegue la procedura seguente:

  • Implementa una classe parziale dei metadati e la classe di metadati associata.

  • Nella classe di metadati associata applica l'attributo DataTypeAttribute al campo dati EmailAddress specificando il EmailAddress valore enumerato. Questo indica al modello di campo Text.ascx che deve personalizzare la visualizzazione degli indirizzi di posta elettronica.

  • Modifica il modello di campo Text.ascx per personalizzare la visualizzazione dei campi dati 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

Per compilare ed eseguire il codice di esempio, è necessario quanto segue:

  • Qualsiasi edizione di Visual Studio 2010 o successiva.

  • Database di esempio AdventureWorksLT. Per informazioni su come scaricare e installare il database di esempio SQL Server, vedere Microsoft SQL Server Product Samples: Database in GitHub. Assicurarsi di installare la versione corretta del database di esempio per la versione di SQL Server in esecuzione.

  • Sito Web basato sui dati. In questo modo è possibile creare un contesto di dati per il database e creare la classe contenente il campo dati da personalizzare. Per altre informazioni, vedere Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Commenti

L'attributo DataTypeAttribute consente di contrassegnare i campi usando un tipo più specifico del tipo intrinseco del database. Il nome del tipo è selezionato dal DataType tipo di enumerazione. Ad esempio, un campo dati stringa che contiene indirizzi di posta elettronica può essere specificato come EmailAddress tipo. Queste informazioni vengono quindi accessibili dai modelli di campo per modificare il modo in cui viene elaborato il campo dati.

Si usa l'attributo DataTypeAttribute per i motivi seguenti:

  • Per fornire informazioni aggiuntive sul tipo per un campo dati. A tale scopo, applicare l'attributo DataTypeAttribute a un campo dati nel modello di dati e specificando il nome di tipo aggiuntivo dall'enumerazione DataType . Il modello di campo che elabora il campo dati può accedere a queste informazioni aggiuntive sui tipi di metadati per determinare come elaborare il campo. Ad esempio, il modello di campo di testo può generare collegamenti ipertestuali per gli indirizzi di posta elettronica il cui tipo intrinseco è String.

  • Per associare un modello di campo personalizzato a un campo dati. Il modello di campo personalizzato specificato verrà quindi usato per elaborare il campo dati. Questa è un'alternativa all'uso dell'attributo UIHintAttribute .

Quando si applica l'attributo DataTypeAttribute a un campo dati, è necessario eseguire le operazioni seguenti:

  • Seguire le regole di utilizzo degli attributi.

  • Implementare la classe di metadati che contiene i campi dati a cui si vuole applicare l'attributo.

  • Eseguire errori di convalida in base alle esigenze.

Per altre informazioni, vedere ASP.NET Linee guida per i dati dinamici.

Costruttori

DataTypeAttribute(DataType)

Inizializza una nuova istanza della classe DataTypeAttribute utilizzando il nome di tipo specificato.

DataTypeAttribute(String)

Inizializza una nuova istanza della classe DataTypeAttribute usando il nome del modello di campo specificato.

Proprietà

CustomDataType

Ottiene il nome del modello di campo personalizzato associato al campo dati.

DataType

Ottiene il tipo associato al campo dati.

DisplayFormat

Ottiene un formato di visualizzazione del campo dati.

ErrorMessage

Ottiene o imposta un messaggio di errore da associare a un controllo di convalida se la convalida non riesce.

(Ereditato da ValidationAttribute)
ErrorMessageResourceName

Ottiene o imposta il nome di risorsa del messaggio di errore da utilizzare per la ricerca del valore della proprietà ErrorMessageResourceType se la convalida non riesce.

(Ereditato da ValidationAttribute)
ErrorMessageResourceType

Ottiene o imposta il tipo di risorsa da utilizzare per la ricerca del messaggio di errore se la convalida non riesce.

(Ereditato da ValidationAttribute)
ErrorMessageString

Ottiene il messaggio di errore di convalida localizzato.

(Ereditato da ValidationAttribute)
RequiresValidationContext

Ottiene un valore che indica se l'attributo richiede il contesto di convalida.

(Ereditato da ValidationAttribute)
TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.

(Ereditato da Attribute)

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
FormatErrorMessage(String)

Applica la formattazione a un messaggio di errore in base al campo dati in cui si è verificato l'errore.

(Ereditato da ValidationAttribute)
GetDataTypeName()

Restituisce il nome del tipo associato al campo dati.

GetHashCode()

Restituisce il codice hash per l'istanza.

(Ereditato da Attribute)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
GetValidationResult(Object, ValidationContext)

Verifica se il valore specificato è valido rispetto all'attributo di convalida corrente.

(Ereditato da ValidationAttribute)
IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.

(Ereditato da Attribute)
IsValid(Object)

Verifica che il valore del campo dati sia valido.

IsValid(Object, ValidationContext)

Convalida il valore specificato rispetto all'attributo di convalida corrente.

(Ereditato da ValidationAttribute)
Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
Validate(Object, String)

Convalida l'oggetto specificato.

(Ereditato da ValidationAttribute)
Validate(Object, ValidationContext)

Convalida l'oggetto specificato.

(Ereditato da ValidationAttribute)

Implementazioni dell'interfaccia esplicita

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.

(Ereditato da Attribute)

Si applica a

Vedi anche