DataTypeAttribute Klas

Definitie

Hiermee geeft u de naam van een extra type dat moet worden gekoppeld aan een gegevensveld.

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
Overname
Afgeleid
Kenmerken

Voorbeelden

In het volgende voorbeeld wordt het DataTypeAttribute kenmerk gebruikt om de weergave van het gegevensveld EmailAddress aan te passen. De e-mailadressen worden weergegeven als hyperlinks in plaats van als eenvoudige tekst. Dit is wat dynamische gegevens afleiden van het intrinsieke gegevenstype. De voorbeeldcode bestaat uit drie delen en voert de volgende stappen uit:

  • Hiermee wordt een gedeeltelijke klasse met metagegevens en de bijbehorende metagegevensklasse geïmplementeerd.

  • In de gekoppelde metagegevensklasse wordt het kenmerk toegepast op het DataTypeAttribute gegevensveld EmailAddress door de EmailAddress opgesomde waarde op te geven. Dit geeft aan de veldsjabloon Text.ascx aan dat deze de weergave van e-mailadressen moet aanpassen.

  • Hiermee wijzigt u de veldsjabloon Text.ascx om de weergave van de gegevensvelden EmailAddress aan te passen.

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

Als u de voorbeeldcode wilt compileren en uitvoeren, hebt u het volgende nodig:

  • Elke editie van Visual Studio 2010 of hoger.

  • De AdventureWorksLT-voorbeelddatabase. Zie Microsoft SQL Server Productvoorbeelden: Database op GitHub voor informatie over het downloaden en installeren van de SQL Server voorbeelddatabase. Zorg ervoor dat u de juiste versie van de voorbeelddatabase installeert voor de versie van SQL Server die u uitvoert.

  • Een gegevensgestuurde website. Hiermee kunt u een gegevenscontext voor de database maken en de klasse maken die het gegevensveld bevat om aan te passen. Zie Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding voor meer informatie.

Opmerkingen

DataTypeAttribute Met het kenmerk kunt u velden markeren met behulp van een type dat specifieker is dan het intrinsieke type database. De typenaam wordt geselecteerd in het DataType opsommingstype. Een tekenreeksgegevensveld met e-mailadressen kan bijvoorbeeld worden opgegeven als het EmailAddress type. Deze informatie wordt vervolgens geopend door de veldsjablonen om te wijzigen hoe het gegevensveld wordt verwerkt.

U gebruikt het DataTypeAttribute kenmerk om de volgende redenen:

  • Aanvullende typegegevens voor een gegevensveld opgeven. U doet dit door het DataTypeAttribute kenmerk toe te passen op een gegevensveld in het gegevensmodel en door de extra typenaam op te geven uit de DataType opsomming. De veldsjabloon die het gegevensveld verwerkt, heeft toegang tot deze aanvullende informatie over het metagegevenstype om te bepalen hoe het veld moet worden verwerkt. De sjabloon voor tekstvelden kan bijvoorbeeld hyperlinks genereren voor e-mailadressen waarvan het intrinsieke type is String.

  • Een aangepaste veldsjabloon koppelen aan een gegevensveld. De opgegeven sjabloon voor aangepaste velden wordt vervolgens gebruikt om het gegevensveld te verwerken. Dit is een alternatief voor het gebruik van het UIHintAttribute kenmerk.

Wanneer u het DataTypeAttribute kenmerk toepast op een gegevensveld, moet u het volgende doen:

  • Volg de gebruiksregels voor kenmerken.

  • Implementeer de metagegevensklasse die de gegevensvelden bevat waarop u het kenmerk wilt toepassen.

  • Probleemvalidatiefouten indien van toepassing.

Zie ASP.NET Richtlijnen voor dynamische gegevens voor meer informatie.

Constructors

Name Description
DataTypeAttribute(DataType)

Initialiseert een nieuw exemplaar van de DataTypeAttribute klasse met behulp van de opgegeven typenaam.

DataTypeAttribute(String)

Initialiseert een nieuw exemplaar van de DataTypeAttribute klasse met behulp van de opgegeven veldsjabloonnaam.

Eigenschappen

Name Description
CustomDataType

Hiermee haalt u de naam op van de aangepaste veldsjabloon die is gekoppeld aan het gegevensveld.

DataType

Hiermee wordt het type opgehaald dat is gekoppeld aan het gegevensveld.

DisplayFormat

Hiermee haalt u een weergave-indeling voor gegevensvelden op.

ErrorMessage

Hiermee wordt een foutbericht opgevraagd of ingesteld om te koppelen aan een validatiebeheer als de validatie mislukt.

(Overgenomen van ValidationAttribute)
ErrorMessageResourceName

Hiermee haalt u de resourcenaam van het foutbericht op of stelt u deze in om de eigenschapswaarde op te zoeken als de ErrorMessageResourceType validatie mislukt.

(Overgenomen van ValidationAttribute)
ErrorMessageResourceType

Hiermee haalt u het resourcetype op dat moet worden gebruikt voor het opzoeken van foutberichten als de validatie mislukt.

(Overgenomen van ValidationAttribute)
ErrorMessageString

Hiermee wordt het gelokaliseerde validatiefoutbericht weergegeven.

(Overgenomen van ValidationAttribute)
RequiresValidationContext

Hiermee wordt een waarde opgehaald die aangeeft of het kenmerk validatiecontext vereist.

(Overgenomen van ValidationAttribute)
TypeId

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id.

(Overgenomen van Attribute)

Methoden

Name Description
Equals(Object)

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
FormatErrorMessage(String)

Hiermee past u opmaak toe op een foutbericht, op basis van het gegevensveld waarin de fout is opgetreden.

(Overgenomen van ValidationAttribute)
GetDataTypeName()

Retourneert de naam van het type dat is gekoppeld aan het gegevensveld.

GetHashCode()

Retourneert de hash-code voor dit exemplaar.

(Overgenomen van Attribute)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
GetValidationResult(Object, ValidationContext)

Hiermee wordt gecontroleerd of de opgegeven waarde geldig is met betrekking tot het huidige validatiekenmerk.

(Overgenomen van ValidationAttribute)
IsDefaultAttribute()

Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse.

(Overgenomen van Attribute)
IsValid(Object, ValidationContext)

Valideert de opgegeven waarde met betrekking tot het huidige validatiekenmerk.

(Overgenomen van ValidationAttribute)
IsValid(Object)

Controleert of de waarde van het gegevensveld geldig is.

Match(Object)

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
Validate(Object, String)

Valideert het opgegeven object.

(Overgenomen van ValidationAttribute)
Validate(Object, ValidationContext)

Valideert het opgegeven object.

(Overgenomen van ValidationAttribute)

Expliciete interface-implementaties

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

Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's.

(Overgenomen van Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen.

(Overgenomen van Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1).

(Overgenomen van Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven.

(Overgenomen van Attribute)

Van toepassing op

Zie ook