DataTypeAttribute Klasse

Definition

Gibt den Namen eines zusätzlichen Typs an, der einem Datenfeld zugeordnet werden soll.Specifies the name of an additional type to associate with a data field.

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
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
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 Daten Felds EmailAddress anzupassen.The following example uses the DataTypeAttribute attribute to customize the display of the EmailAddress data field. Die e-Mail-Adressen werden als Hyperlinks anstelle von einfachem Text angezeigt. Dies ist dynamische Daten, die vom systeminternen Datentyp abgeleitet werden.The email addresses are shown as hyperlinks instead of as simple text, which is what Dynamic Data would infer from the intrinsic data type. Der Beispielcode ist in drei Teilen und führt die folgenden Schritte aus:The example code is in three parts, and it performs the following steps:

  • Es implementiert eine partielle Metadatenklasse und die zugehörige Metadatenklasse.It implements a metadata partial class and the associated metadata class.

  • In der zugeordneten Metadatenklasse wendet Sie das- DataTypeAttribute Attribut auf das EmailAddress-Datenfeld an, indem der- EmailAddress Enumerationswert angegeben wird.In the associated metadata class, it applies the DataTypeAttribute attribute to the EmailAddress data field by specifying the EmailAddress enumerated value. Dies gibt der Feld Vorlage Text. ascx an, dass die Anzeige von e-Mail-Adressen angepasst werden soll.This indicates to the Text.ascx field template that it should customize the display of email addresses.

  • Er ändert die Text. ascx-Feld Vorlage, um die Anzeige der EmailAddress-Datenfelder anzupassen.It modifies the Text.ascx field template to customize the display of the EmailAddress data fields.

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

Um den Beispielcode zu kompilieren und auszuführen, benötigen Sie Folgendes:To compile and run the example code, you need the following:

  • Eine beliebige Edition von Visual Studio 2010 oder höher.Any edition of Visual Studio 2010 or later.

  • Die AdventureWorksLT-Beispieldatenbank.The AdventureWorksLT sample database. Informationen zum herunterladen und Installieren der SQL Server-Beispieldatenbank finden Sie unter Microsoft SQL Server Product Samples: Database on GitHub.For information about how to download and install the SQL Server sample database, see Microsoft SQL Server Product Samples: Database on GitHub. Stellen Sie sicher, dass Sie die richtige Version der-Beispieldatenbank für die Version der SQL Server installieren, die Sie ausführen.Make sure that you install the correct version of the sample database for the version of SQL Server that you are running.

  • Eine datengesteuerte Website.A data-driven Web site. Dies ermöglicht es Ihnen, einen Datenkontext für die Datenbank zu erstellen und die Klasse zu erstellen, die das Datenfeld enthält, das angepasst werden soll.This enables you to create a data context for the database and to create the class that contains the data field to customize. Weitere Informationen finden Sie unter Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.For more information, see Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Hinweise

Mithilfe des- DataTypeAttribute Attributs können Sie Felder mithilfe eines Typs markieren, der spezifischere als der systeminterne Daten Bank Typ ist.The DataTypeAttribute attribute enables you to mark fields by using a type that is more specific than the database intrinsic type. Der Typname wird aus dem DataType Enumerationstyp ausgewählt.The type name is selected from the DataType enumeration type. Beispielsweise kann ein Zeichen folgen Datenfeld, das e-Mail-Adressen enthält, als Typ angegeben werden EmailAddress .For example, a string data field that contains email addresses can be specified as the EmailAddress type. Auf diese Informationen wird dann von den Feld Vorlagen zugegriffen, um zu ändern, wie das Datenfeld verarbeitet wird.This information is then accessed by the field templates to modify how the data field is processed.

Sie verwenden das- DataTypeAttribute Attribut aus den folgenden Gründen:You use the DataTypeAttribute attribute for the following reasons:

  • , Wenn zusätzliche Typinformationen für ein Datenfeld bereitgestellt werden sollen.To provide additional type information for a data field. Hierzu wenden Sie das DataTypeAttribute -Attribut auf ein Datenfeld im Datenmodell an und geben den zusätzlichen Typnamen aus der- DataType Enumeration an.You do this by applying the DataTypeAttribute attribute to a data field in the data model and by specifying the additional type name from the DataType enumeration. Die Feld Vorlage, die das Datenfeld verarbeitet, kann auf diese zusätzlichen metadatentypinformationen zugreifen, um zu bestimmen, wie das Feld verarbeitet wird.The field template that processes the data field can access this additional metadata type information to determine how to process the field. Die Text Feld Vorlage kann z. b. Hyperlinks für e-Mail-Adressen generieren, deren System interner Typ ist String .For example, the text field template can generate hyperlinks for email addresses whose intrinsic type is String.

  • Um einem Datenfeld eine benutzerdefinierte Feld Vorlage zuzuordnen.To associate a custom field template with a data field. Die angegebene benutzerdefinierte Feld Vorlage wird dann verwendet, um das Datenfeld zu verarbeiten.The specified custom field template will then be used to process the data field. Dies ist eine Alternative zur Verwendung des- UIHintAttribute Attributs.This is an alternative to using the UIHintAttribute attribute.

Wenn Sie das- DataTypeAttribute Attribut auf ein Datenfeld anwenden, müssen Sie die folgenden Schritte ausführen:When you apply the DataTypeAttribute attribute to a data field you must do the following:

  • Befolgen Sie die Attribut Verwendungs Regeln.Follow the attribute usage rules.

  • Implementieren Sie die Metadatenklasse, die die Datenfelder enthält, auf die das Attribut angewendet werden soll.Implement the metadata class that contains the data fields to which you want to apply the attribute.

  • Geben Sie gegebenenfalls Validierungs Fehler aus.Issue validation errors as appropriate.

Weitere Informationen finden Sie unter ASP.net dynamische Daten Guidelines.For more information, see ASP.NET Dynamic Data Guidelines.

Konstruktoren

DataTypeAttribute(DataType)

Initialisiert eine neue Instanz der DataTypeAttribute-Klasse mit dem angegebenen Typnamen.Initializes a new instance of the DataTypeAttribute class by using the specified type name.

DataTypeAttribute(String)

Initialisiert eine neue Instanz der DataTypeAttribute-Klasse unter Verwendung des angegebenen Feldvorlagennamens.Initializes a new instance of the DataTypeAttribute class by using the specified field template name.

Eigenschaften

CustomDataType

Ruft den Namen der benutzerdefinierten Feldvorlage ab, die dem Datenfeld zugeordnet ist.Gets the name of custom field template that is associated with the data field.

DataType

Ruft den Typ ab, der dem Datenfeld zugeordnet ist.Gets the type that is associated with the data field.

DisplayFormat

Ruft ein Datenfeldanzeigeformat ab.Gets a data-field display format.

ErrorMessage

Ruft eine Fehlermeldung ab, die beim Fehlschlagen der Validierung einem Validierungssteuerelement zugeordnet wird, oder legt diese fest.Gets or sets an error message to associate with a validation control if validation fails.

(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.Gets or sets the error message resource name to use in order to look up the ErrorMessageResourceType property value if validation fails.

(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.Gets or sets the resource type to use for error-message lookup if validation fails.

(Geerbt von ValidationAttribute)
ErrorMessageString

Ruft die lokalisierte Validierungsfehlermeldung ab.Gets the localized validation error message.

(Geerbt von ValidationAttribute)
RequiresValidationContext

Ruft einen Wert ab, der angibt, ob das Attribut Validierungskontext erfordert.Gets a value that indicates whether the attribute requires validation context.

(Geerbt von ValidationAttribute)
TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.When implemented in a derived class, gets a unique identifier for this Attribute.

(Geerbt von Attribute)

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.Returns a value that indicates whether this instance is equal to a specified object.

(Geerbt von Attribute)
FormatErrorMessage(String)

Wendet eine Formatierung auf eine Fehlermeldung auf Grundlage des Datenfelds an, in dem der Fehler aufgetreten ist.Applies formatting to an error message, based on the data field where the error occurred.

(Geerbt von ValidationAttribute)
GetDataTypeName()

Gibt den Namen des Typs zurück, der dem Datenfeld zugeordnet ist.Returns the name of the type that is associated with the data field.

GetHashCode()

Gibt den Hashcode für diese Instanz zurück.Returns the hash code for this instance.

(Geerbt von Attribute)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
GetValidationResult(Object, ValidationContext)

Überprüft, ob der angegebene Wert in Bezug auf das aktuelle Validierungsattribut gültig ist.Checks whether the specified value is valid with respect to the current validation attribute.

(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.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Geerbt von Attribute)
IsValid(Object)

Überprüft, ob der Wert des Datenfelds gültig ist.Checks that the value of the data field is valid.

IsValid(Object, ValidationContext)

Überprüft den angegebenen Wert in Bezug auf das aktuelle Validierungsattribut.Validates the specified value with respect to the current validation attribute.

(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.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)
Validate(Object, String)

Validiert das angegebene Objekt.Validates the specified object.

(Geerbt von ValidationAttribute)
Validate(Object, ValidationContext)

Validiert das angegebene Objekt.Validates the specified object.

(Geerbt von ValidationAttribute)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.Maps a set of names to a corresponding set of dispatch identifiers.

(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.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).Retrieves the number of type information interfaces that an object provides (either 0 or 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.Provides access to properties and methods exposed by an object.

(Geerbt von Attribute)

Gilt für:

Siehe auch