Teilen über


DataTypeAttribute Klasse

Definition

Gibt den Namen eines zusätzlichen Typs an, der einem Datenfeld zugeordnet werden soll.

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
Vererbung
Abgeleitet
Attribute

Beispiele

Im folgenden Beispiel wird das DataTypeAttribute -Attribut verwendet, um die Anzeige des EmailAddress-Datenfelds anzupassen. Die E-Mail-Adressen werden als Links statt als einfacher Text angezeigt, was Dynamic Data aus dem systeminternen Datentyp ableiten würde. Der Beispielcode besteht aus drei Teilen und führt die folgenden Schritte aus:

  • Sie implementiert eine partielle Metadatenklasse und die zugeordnete Metadatenklasse.

  • In der zugeordneten Metadatenklasse wendet sie das DataTypeAttribute Attribut auf das EmailAddress-Datenfeld an, indem der EmailAddress enumerationierte Wert angegeben wird. Dies gibt der Feldvorlage Text.ascx an, dass die Anzeige von E-Mail-Adressen angepasst werden soll.

  • Die Feldvorlage Text.ascx wird geändert, um die Anzeige der EmailAddress-Datenfelder anzupassen.

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

Zum Kompilieren und Ausführen des Beispielcodes benötigen Sie Folgendes:

  • Jede Edition von Visual Studio 2010 oder höher.

  • Die AdventureWorksLT-Beispieldatenbank. Informationen zum Herunterladen und Installieren der SQL Server Beispieldatenbank finden Sie unter Microsoft SQL Server-Produktbeispiele: Datenbank auf GitHub. Stellen Sie sicher, dass Sie die richtige Version der Beispieldatenbank für die Version von SQL Server installieren, die Sie ausführen.

  • Eine datengesteuerte Website. Dadurch können Sie einen Datenkontext für die Datenbank erstellen und die Klasse erstellen, die das anzupassende Datenfeld enthält. Weitere Informationen finden Sie unter Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Hinweise

Mit DataTypeAttribute dem -Attribut können Sie Felder mit einem Typ markieren, der spezifischer ist als der systeminterne Datenbanktyp. Der Typname wird aus dem Enumerationstyp DataType ausgewählt. Beispielsweise kann ein Zeichenfolgendatenfeld, das E-Mail-Adressen enthält, als EmailAddress Typ angegeben werden. Anschließend greifen die Feldvorlagen auf diese Informationen zu, um die Verarbeitung des Datenfelds zu ändern.

Sie verwenden das DataTypeAttribute -Attribut aus den folgenden Gründen:

  • Um zusätzliche Typinformationen für ein Datenfeld bereitzustellen. Dazu wenden Sie das DataTypeAttribute Attribut auf ein Datenfeld im Datenmodell an und geben den zusätzlichen Typnamen aus der DataType Enumeration an. Die Feldvorlage, die das Datenfeld verarbeitet, kann auf diese zusätzlichen Metadatentypinformationen zugreifen, um zu bestimmen, wie das Feld verarbeitet werden soll. Beispielsweise kann die Textfeldvorlage Links für E-Mail-Adressen generieren, deren systeminterner Typ ist String.

  • So ordnen Sie eine benutzerdefinierte Feldvorlage einem Datenfeld zu. Die angegebene benutzerdefinierte Feldvorlage wird dann verwendet, um das Datenfeld zu verarbeiten. Dies ist eine Alternative zur Verwendung des -Attributs UIHintAttribute .

Wenn Sie das DataTypeAttribute Attribut auf ein Datenfeld anwenden, müssen Sie die folgenden Schritte ausführen:

  • Befolgen Sie die Attributverwendungsregeln.

  • Implementieren Sie die Metadatenklasse, die die Datenfelder enthält, auf die Sie das Attribut anwenden möchten.

  • Geben Sie ggf. Validierungsfehler aus.

Weitere Informationen finden Sie unter Richtlinien für ASP.NET dynamische Daten.

Konstruktoren

DataTypeAttribute(DataType)

Initialisiert eine neue Instanz der DataTypeAttribute-Klasse mit dem angegebenen Typnamen.

DataTypeAttribute(String)

Initialisiert eine neue Instanz der DataTypeAttribute-Klasse unter Verwendung des angegebenen Feldvorlagennamens.

Eigenschaften

CustomDataType

Ruft den Namen der benutzerdefinierten Feldvorlage ab, die dem Datenfeld zugeordnet ist.

DataType

Ruft den Typ ab, der dem Datenfeld zugeordnet ist.

DisplayFormat

Ruft ein Datenfeldanzeigeformat ab.

ErrorMessage

Ruft eine Fehlermeldung ab, die beim Fehlschlagen der Validierung einem Validierungssteuerelement zugeordnet wird, oder legt diese fest.

(Geerbt von ValidationAttribute)
ErrorMessageResourceName

Ruft den Fehlermeldungsressourcennamen ab, mithilfe dessen der ErrorMessageResourceType-Eigenschaftswert nachgeschlagen werden soll, wenn die Validierung fehlschlägt, oder legt diesen fest.

(Geerbt von ValidationAttribute)
ErrorMessageResourceType

Ruft den Ressourcentyp ab, der für die Fehlermeldungssuche verwendet werden soll, wenn die Validierung fehlschlägt, oder legt ihn fest.

(Geerbt von ValidationAttribute)
ErrorMessageString

Ruft die lokalisierte Validierungsfehlermeldung ab.

(Geerbt von ValidationAttribute)
RequiresValidationContext

Ruft einen Wert ab, der angibt, ob das Attribut Validierungskontext erfordert.

(Geerbt von ValidationAttribute)
TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.

(Geerbt von Attribute)

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.

(Geerbt von Attribute)
FormatErrorMessage(String)

Wendet eine Formatierung auf eine Fehlermeldung auf Grundlage des Datenfelds an, in dem der Fehler aufgetreten ist.

(Geerbt von ValidationAttribute)
GetDataTypeName()

Gibt den Namen des Typs zurück, der dem Datenfeld zugeordnet ist.

GetHashCode()

Gibt den Hashcode für diese Instanz zurück.

(Geerbt von Attribute)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
GetValidationResult(Object, ValidationContext)

Überprüft, ob der angegebene Wert in Bezug auf das aktuelle Validierungsattribut gültig ist.

(Geerbt von ValidationAttribute)
IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
IsValid(Object)

Überprüft, ob der Wert des Datenfelds gültig ist.

IsValid(Object, ValidationContext)

Überprüft den angegebenen Wert in Bezug auf das aktuelle Validierungsattribut.

(Geerbt von ValidationAttribute)
Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
Validate(Object, String)

Validiert das angegebene Objekt.

(Geerbt von ValidationAttribute)
Validate(Object, ValidationContext)

Validiert das angegebene Objekt.

(Geerbt von ValidationAttribute)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.

(Geerbt von Attribute)

Gilt für:

Weitere Informationen