DataTypeAttribute Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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) |