DataTypeAttribute Klass

Definition

Anger namnet på en ytterligare typ som ska associeras med ett datafält.

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
Arv
Härledda
Attribut

Exempel

I följande exempel används DataTypeAttribute attributet för att anpassa visningen av datafältet EmailAddress. E-postadresserna visas som hyperlänkar i stället för som enkel text, vilket är vad dynamiska data skulle härleda från den inbyggda datatypen. Exempelkoden finns i tre delar och utför följande steg:

  • Den implementerar en partiell metadataklass och den associerade metadataklassen.

  • I den associerade metadataklassen DataTypeAttribute tillämpas attributet på datafältet EmailAddress genom att ange det EmailAddress uppräknade värdet. Detta anger för fältmallen Text.ascx att den ska anpassa visningen av e-postadresser.

  • Den ändrar fältmallen Text.ascx för att anpassa visningen av datafälten EmailAddress.

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

För att kompilera och köra exempelkoden behöver du följande:

  • Alla utgåvor av Visual Studio 2010 eller senare.

  • AdventureWorksLT-exempeldatabasen. Information om hur du laddar ned och installerar SQL Server exempeldatabas finns i Microsoft SQL Server Produktexempel: Databas på GitHub. Kontrollera att du installerar rätt version av exempeldatabasen för den version av SQL Server som du kör.

  • En datadriven webbplats. På så sätt kan du skapa en datakontext för databasen och skapa klassen som innehåller datafältet som ska anpassas. Mer information finns i Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Kommentarer

Med DataTypeAttribute attributet kan du markera fält med hjälp av en typ som är mer specifik än databasens inbyggda typ. Typnamnet väljs från DataType uppräkningstypen. Ett strängdatafält som innehåller e-postadresser kan till exempel anges som EmailAddress typ. Den här informationen används sedan av fältmallarna för att ändra hur datafältet bearbetas.

Du använder attributet DataTypeAttribute av följande skäl:

  • Ange ytterligare typinformation för ett datafält. Det gör du genom att tillämpa DataTypeAttribute attributet på ett datafält i datamodellen och genom att ange ytterligare typnamn från DataType uppräkningen. Fältmallen som bearbetar datafältet kan komma åt den här ytterligare metadatatypsinformationen för att avgöra hur fältet ska bearbetas. Textfältmallen kan till exempel generera hyperlänkar för e-postadresser vars inbyggda typ är String.

  • Så här associerar du en anpassad fältmall med ett datafält. Den angivna mallen för anpassade fält används sedan för att bearbeta datafältet. Det här är ett alternativ till att använda attributet UIHintAttribute .

När du tillämpar attributet på DataTypeAttribute ett datafält måste du göra följande:

  • Följ användningsreglerna för attribut.

  • Implementera metadataklassen som innehåller de datafält som du vill tillämpa attributet på.

  • Utfärda valideringsfel efter behov.

Mer information finns i ASP.NET Riktlinjer för dynamiska data.

Konstruktorer

Name Description
DataTypeAttribute(DataType)

Initierar en ny instans av DataTypeAttribute klassen med hjälp av det angivna typnamnet.

DataTypeAttribute(String)

Initierar en ny instans av DataTypeAttribute klassen med hjälp av det angivna fältmallnamnet.

Egenskaper

Name Description
CustomDataType

Hämtar namnet på den anpassade fältmall som är associerad med datafältet.

DataType

Hämtar den typ som är associerad med datafältet.

DisplayFormat

Hämtar ett visningsformat för datafält.

ErrorMessage

Hämtar eller anger ett felmeddelande som ska associeras med en verifieringskontroll om verifieringen misslyckas.

(Ärvd från ValidationAttribute)
ErrorMessageResourceName

Hämtar eller anger det felmeddelande som resursnamnet ska användas för att söka efter egenskapsvärdet om verifieringen ErrorMessageResourceType misslyckas.

(Ärvd från ValidationAttribute)
ErrorMessageResourceType

Hämtar eller anger den resurstyp som ska användas för felmeddelandesökning om verifieringen misslyckas.

(Ärvd från ValidationAttribute)
ErrorMessageString

Hämtar det lokaliserade valideringsfelmeddelandet.

(Ärvd från ValidationAttribute)
RequiresValidationContext

Hämtar ett värde som anger om attributet kräver verifieringskontext.

(Ärvd från ValidationAttribute)
TypeId

När den implementeras i en härledd klass hämtar du en unik identifierare för den här Attribute.

(Ärvd från Attribute)

Metoder

Name Description
Equals(Object)

Returnerar ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
FormatErrorMessage(String)

Tillämpar formatering på ett felmeddelande baserat på det datafält där felet inträffade.

(Ärvd från ValidationAttribute)
GetDataTypeName()

Returnerar namnet på den typ som är associerad med datafältet.

GetHashCode()

Returnerar hash-koden för den här instansen.

(Ärvd från Attribute)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
GetValidationResult(Object, ValidationContext)

Kontrollerar om det angivna värdet är giltigt med avseende på det aktuella valideringsattributet.

(Ärvd från ValidationAttribute)
IsDefaultAttribute()

När den åsidosättas i en härledd klass anger du om värdet för den här instansen är standardvärdet för den härledda klassen.

(Ärvd från Attribute)
IsValid(Object, ValidationContext)

Validerar det angivna värdet med avseende på det aktuella valideringsattributet.

(Ärvd från ValidationAttribute)
IsValid(Object)

Kontrollerar att värdet för datafältet är giltigt.

Match(Object)

När den åsidosätts i en härledd klass returneras ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
Validate(Object, String)

Verifierar det angivna objektet.

(Ärvd från ValidationAttribute)
Validate(Object, ValidationContext)

Verifierar det angivna objektet.

(Ärvd från ValidationAttribute)

Explicita gränssnittsimplementeringar

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

Mappar en uppsättning namn till en motsvarande uppsättning av sändningsidentifierare.

(Ärvd från Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hämtar typinformationen för ett objekt, som kan användas för att hämta typinformationen för ett gränssnitt.

(Ärvd från Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hämtar antalet typinformationsgränssnitt som ett objekt tillhandahåller (antingen 0 eller 1).

(Ärvd från Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Ger åtkomst till egenskaper och metoder som exponeras av ett objekt.

(Ärvd från Attribute)

Gäller för

Se även