DataTypeAttribute Osztály

Definíció

Egy adatmezőhöz társítandó további típus nevét adja meg.

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
Öröklődés
Származtatott
Attribútumok

Példák

Az alábbi példa az DataTypeAttribute e-mailaddress adatmező megjelenítésének testreszabásához használja az attribútumot. Az e-mail-címek egyszerű szöveg helyett hivatkozásokként jelennek meg, ami a dinamikus adatok belső adattípusából következtetne. A példakód három részből áll, és a következő lépéseket hajtja végre:

  • Implementál egy metaadat-részleges osztályt és a társított metaadatosztályt.

  • A társított metaadatosztályban az DataTypeAttribute attribútumot az enumerált érték megadásával alkalmazza az EmailAddress E-mailAddress adatmezőre. Ez azt jelzi a Text.ascx mezősablonnak, hogy testre kell szabnia az e-mail-címek megjelenítését.

  • Módosítja a Text.ascx mezősablont az EmailAddress adatmezők megjelenítésének testreszabásához.

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

A példakód fordításához és futtatásához a következőkre van szükség:

  • A Visual Studio 2010-ben vagy újabb verzióiban.

  • Az AdventureWorksLT mintaadatbázis. A SQL Server mintaadatbázis letöltéséről és telepítéséről a GitHub Microsoft SQL Server Termékminták: Adatbázis című témakörben olvashat. Győződjön meg arról, hogy a mintaadatbázis megfelelő verzióját telepíti a futó SQL Server verziójához.

  • Adatvezérelt webhely. Így létrehozhat egy adatkörnyezetet az adatbázishoz, és létrehozhatja a testre szabandó adatmezőt tartalmazó osztályt. További információért lásd Walkthrough: Creating a New Dynamic Data Web Site using Scaffolding.

Megjegyzések

Az DataTypeAttribute attribútum lehetővé teszi a mezők megjelölését az adatbázis belső típusánál pontosabb típus használatával. A típus neve ki van jelölve az DataType enumerálási típusból. Típusként EmailAddress megadható például egy e-mail-címeket tartalmazó sztringadatmező. Ezt az információt ezután a mezősablonok érik el, hogy módosítsák az adatmező feldolgozásának módját.

Az attribútumot a DataTypeAttribute következő okokból használja:

  • További típusinformációk megadása egy adatmezőhöz. Ehhez alkalmazza az attribútumot az DataTypeAttribute adatmodell egyik adatmezőjére, és adja meg a további típusnevet az DataType enumerálásból. Az adatmezőt feldolgozó mezősablon hozzáférhet ezekhez a metaadattípus-információkhoz a mező feldolgozásának módjának meghatározásához. A szövegmezősablon például olyan e-mail-címekre mutató hivatkozásokat hozhat létre, amelyek belső típusa .String

  • Egyéni mezősablon társítása adatmezővel. Ezután a megadott egyéni mezősablont fogja használni az adatmező feldolgozásához. Ez egy alternatíva az UIHintAttribute attribútum használatára.

Ha az DataTypeAttribute attribútumot egy adatmezőre alkalmazza, a következőket kell tennie:

  • Kövesse az attribútumhasználati szabályokat.

  • Implementálja azt a metaadatosztályt, amely tartalmazza azokat az adatmezőket, amelyekre alkalmazni szeretné az attribútumot.

  • Szükség szerint érvényesítési hibákat ad ki.

További információ: ASP.NET Dinamikus adatokra vonatkozó irányelvek.

Konstruktorok

Name Description
DataTypeAttribute(DataType)

Inicializálja az DataTypeAttribute osztály új példányát a megadott típusnév használatával.

DataTypeAttribute(String)

Inicializálja az DataTypeAttribute osztály új példányát a megadott mezősablonnév használatával.

Tulajdonságok

Name Description
CustomDataType

Lekéri az adatmezőhöz társított egyéni mezősablon nevét.

DataType

Lekéri az adatmezőhöz társított típust.

DisplayFormat

Lekéri az adatmező megjelenítési formátumát.

ErrorMessage

Ha az ellenőrzés sikertelen, hibaüzenetet kap vagy állít be egy érvényesítési vezérlőhöz való társításhoz.

(Öröklődés forrása ValidationAttribute)
ErrorMessageResourceName

Lekéri vagy beállítja a hibaüzenet erőforrásnevét a tulajdonság értékének kereséséhez, ha az ErrorMessageResourceType ellenőrzés sikertelen.

(Öröklődés forrása ValidationAttribute)
ErrorMessageResourceType

Lekéri vagy beállítja az erőforrástípust a hibaüzenetek kereséséhez, ha az ellenőrzés sikertelen.

(Öröklődés forrása ValidationAttribute)
ErrorMessageString

Lekéri a honosított érvényesítési hibaüzenetet.

(Öröklődés forrása ValidationAttribute)
RequiresValidationContext

Olyan értéket kap, amely jelzi, hogy az attribútumhoz érvényesítési környezet szükséges-e.

(Öröklődés forrása ValidationAttribute)
TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

(Öröklődés forrása Attribute)

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

(Öröklődés forrása Attribute)
FormatErrorMessage(String)

Formázást alkalmaz egy hibaüzenetre annak az adatmezőnek az alapján, ahol a hiba történt.

(Öröklődés forrása ValidationAttribute)
GetDataTypeName()

Az adatmezőhöz társított típus nevét adja vissza.

GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása Attribute)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
GetValidationResult(Object, ValidationContext)

Ellenőrzi, hogy a megadott érték érvényes-e az aktuális érvényesítési attribútumra vonatkozóan.

(Öröklődés forrása ValidationAttribute)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

(Öröklődés forrása Attribute)
IsValid(Object, ValidationContext)

Ellenőrzi a megadott értéket az aktuális érvényesítési attribútummal kapcsolatban.

(Öröklődés forrása ValidationAttribute)
IsValid(Object)

Ellenőrzi, hogy az adatmező értéke érvényes-e.

Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

(Öröklődés forrása Attribute)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
Validate(Object, String)

Ellenőrzi a megadott objektumot.

(Öröklődés forrása ValidationAttribute)
Validate(Object, ValidationContext)

Ellenőrzi a megadott objektumot.

(Öröklődés forrása ValidationAttribute)

Explicit interfész-implementációk

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

Névkészletet képez le a küldési azonosítók megfelelő készletére.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

(Öröklődés forrása Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

(Öröklődés forrása Attribute)

A következőre érvényes:

Lásd még