Freigeben ü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 Felds "EmailAddress"-Daten anzupassen. Die E-Mail-Adressen werden als Links statt als einfacher Text angezeigt, was dynamische Daten vom systeminternen Datentyp ableiten würden. Der Beispielcode ist in drei Teilen enthalten 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 Feld "EmailAddress"-Daten an, indem der EmailAddress Aufzählungswert angegeben wird. Dies gibt an, dass die Feldvorlage "Text.ascx" die Anzeige von E-Mail-Adressen anpassen soll.

  • Sie ändert die Text.ascx-Feldvorlage, um die Anzeige der E-MailAddress-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 Ausgabe 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 Product Samples: Database on 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. Auf diese Weise können Sie einen Datenkontext für die Datenbank erstellen und die Klasse erstellen, die das zu anpassende Datenfeld enthält. Weitere Informationen finden Sie unter Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Hinweise

Mit dem DataTypeAttribute Attribut können Sie Felder mithilfe eines Typs markieren, der spezifischer als der systeminterne Datenbanktyp ist. Der Typname wird aus dem DataType Enumerationstyp ausgewählt. Beispielsweise kann ein Zeichenfolgendatenfeld, das E-Mail-Adressen enthält, als EmailAddress Typ angegeben werden. Auf diese Informationen wird dann von den Feldvorlagen zugegriffen, um zu ändern, wie das Datenfeld verarbeitet wird.

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

  • So stellen Sie zusätzliche Typinformationen für ein Datenfeld bereit. 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 wird. Die Textfeldvorlage kann beispielsweise Links für E-Mail-Adressen generieren, deren systeminterner Typ lautet String.

  • So ordnen Sie eine benutzerdefinierte Feldvorlage einem Datenfeld zu. Die angegebene benutzerdefinierte Feldvorlage wird dann zum Verarbeiten des Datenfelds verwendet. Dies ist eine Alternative zur Verwendung des UIHintAttribute Attributs.

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

  • Folgen Sie den Attributnutzungsregeln.

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

  • Beheben Von Überprüfungsfehlern nach Bedarf.

Konstruktoren

Name Beschreibung
DataTypeAttribute(DataType)

Initialisiert eine neue Instanz der DataTypeAttribute Klasse mithilfe des angegebenen Typnamens.

DataTypeAttribute(String)

Initialisiert eine neue Instanz der DataTypeAttribute Klasse mithilfe des angegebenen Feldvorlagennamens.

Eigenschaften

Name Beschreibung
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

Dient zum Abrufen oder Festlegen einer Fehlermeldung, die einem Überprüfungssteuerelement zugeordnet werden soll, wenn die Überprüfung fehlschlägt.

(Geerbt von ValidationAttribute)
ErrorMessageResourceName

Ruft den Namen der Fehlermeldungsressource ab, die verwendet werden soll, um den Eigenschaftswert nachzuschlagen, wenn die ErrorMessageResourceType Überprüfung fehlschlägt, oder legt diesen fest.

(Geerbt von ValidationAttribute)
ErrorMessageResourceType

Ruft den Ressourcentyp ab, der für die Fehlermeldungssuche verwendet werden soll, wenn die Überprüfung fehlschlägt, oder legt diesen fest.

(Geerbt von ValidationAttribute)
ErrorMessageString

Ruft die lokalisierte Überprüfungsfehlermeldung ab.

(Geerbt von ValidationAttribute)
RequiresValidationContext

Ruft einen Wert ab, der angibt, ob für das Attribut ein Überprüfungskontext erforderlich ist.

(Geerbt von ValidationAttribute)
TypeId

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ein eindeutiger Bezeichner für diese Attribute.

(Geerbt von Attribute)

Methoden

Name Beschreibung
Equals(Object)

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

(Geerbt von Attribute)
FormatErrorMessage(String)

Wendet die Formatierung auf eine Fehlermeldung an, basierend auf dem Datenfeld, 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 die Type der aktuellen Instanz ab.

(Geerbt von Object)
GetValidationResult(Object, ValidationContext)

Überprüft, ob der angegebene Wert im Hinblick auf das aktuelle Überprüfungsattribut gültig ist.

(Geerbt von ValidationAttribute)
IsDefaultAttribute()

Wenn sie in einer abgeleiteten Klasse überschrieben wird, gibt an, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
IsValid(Object, ValidationContext)

Überprüft den angegebenen Wert im Hinblick auf das aktuelle Überprüfungsattribut.

(Geerbt von ValidationAttribute)
IsValid(Object)

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

Match(Object)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

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

(Geerbt von Object)
Validate(Object, String)

Überprüft das angegebene Objekt.

(Geerbt von ValidationAttribute)
Validate(Object, ValidationContext)

Überprüft das angegebene Objekt.

(Geerbt von ValidationAttribute)

Explizite Schnittstellenimplementierungen

Name Beschreibung
_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 denen 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)

Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden.

(Geerbt von Attribute)

Gilt für:

Weitere Informationen